@@ -4706,9 +4706,19 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
4706
4706
$IdentityFilter = ''
4707
4707
$Filter = ''
4708
4708
$Identity | Where-Object {$_} | ForEach-Object {
4709
- $IdentityInstance = $_
4710
- if ($IdentityInstance -match '.+\\.+') {
4711
- $ConvertedIdentityInstance = $IdentityInstance | Convert-ADName -OutputType Canonical
4709
+ $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
4710
+ if ($IdentityInstance -match '^S-1-') {
4711
+ $IdentityFilter += "(objectsid=$IdentityInstance)"
4712
+ }
4713
+ elseif ($IdentityInstance -match '^CN=') {
4714
+ $IdentityFilter += "(distinguishedname=$IdentityInstance)"
4715
+ }
4716
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
4717
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
4718
+ $IdentityFilter += "(objectguid=$GuidByteString)"
4719
+ }
4720
+ elseif ($IdentityInstance.Contains('\')) {
4721
+ $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical
4712
4722
if ($ConvertedIdentityInstance) {
4713
4723
$UserDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
4714
4724
$UserName = $IdentityInstance.Split('\')[1]
@@ -4719,26 +4729,10 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
4719
4729
}
4720
4730
}
4721
4731
else {
4722
- $IdentityInstance = $IdentityInstance.Replace('(', '\28').Replace(')', '\29')
4723
- if ($IdentityInstance -match '^S-1-.*') {
4724
- # SID format
4725
- $IdentityFilter += "(objectsid=$IdentityInstance)"
4726
- }
4727
- elseif ($IdentityInstance -match '^CN=.*') {
4728
- # distinguished names
4729
- $IdentityFilter += "(distinguishedname=$IdentityInstance)"
4730
- }
4731
- else {
4732
- try {
4733
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
4734
- $IdentityFilter += "(objectguid=$GuidByteString)"
4735
- }
4736
- catch {
4737
- $IdentityFilter += "(samAccountName=$IdentityInstance)"
4738
- }
4739
- }
4732
+ $IdentityFilter += "(samAccountName=$IdentityInstance)"
4740
4733
}
4741
4734
}
4735
+
4742
4736
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
4743
4737
$Filter += "(|$IdentityFilter)"
4744
4738
}
@@ -5751,28 +5745,21 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
5751
5745
$Filter = ''
5752
5746
$Identity | Where-Object {$_} | ForEach-Object {
5753
5747
$IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
5754
- if ($IdentityInstance -match '^S-1-.* ') {
5748
+ if ($IdentityInstance -match '^S-1-') {
5755
5749
$IdentityFilter += "(objectsid=$IdentityInstance)"
5756
5750
}
5757
- elseif ($IdentityInstance -match '^CN=.* ') {
5751
+ elseif ($IdentityInstance -match '^CN=') {
5758
5752
$IdentityFilter += "(distinguishedname=$IdentityInstance)"
5759
5753
}
5760
- elseif ($IdentityInstance -match '.*\..*') {
5761
- $IdentityFilter += "(dnshostname=$IdentityInstance)"
5754
+ elseif ($IdentityInstance.Contains('.')) {
5755
+ $IdentityFilter += "(|(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
5756
+ }
5757
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
5758
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
5759
+ $IdentityFilter += "(objectguid=$GuidByteString)"
5762
5760
}
5763
5761
else {
5764
- try {
5765
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
5766
- $IdentityFilter += "(objectguid=$GuidByteString)"
5767
- }
5768
- catch {
5769
- if ($IdentityInstance.Contains('.')) {
5770
- $IdentityFilter += "(|(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
5771
- }
5772
- else {
5773
- $IdentityFilter += "(name=$IdentityInstance)"
5774
- }
5775
- }
5762
+ $IdentityFilter += "(name=$IdentityInstance)"
5776
5763
}
5777
5764
}
5778
5765
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
@@ -6063,40 +6050,33 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
6063
6050
$IdentityFilter = ''
6064
6051
$Filter = ''
6065
6052
$Identity | Where-Object {$_} | ForEach-Object {
6066
- $IdentityInstance = $_
6067
- if ($IdentityInstance -match '.+\\.+') {
6068
- $ConvertedIdentityInstance = $IdentityInstance | Convert-ADName -OutputType Canonical
6053
+ $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
6054
+ if ($IdentityInstance -match '^S-1-') {
6055
+ $IdentityFilter += "(objectsid=$IdentityInstance)"
6056
+ }
6057
+ elseif ($IdentityInstance -match '^(CN|OU|DC)=') {
6058
+ $IdentityFilter += "(distinguishedname=$IdentityInstance)"
6059
+ }
6060
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
6061
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
6062
+ $IdentityFilter += "(objectguid=$GuidByteString)"
6063
+ }
6064
+ elseif ($IdentityInstance.Contains('\')) {
6065
+ $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical
6069
6066
if ($ConvertedIdentityInstance) {
6070
6067
$ObjectDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
6071
6068
$ObjectName = $IdentityInstance.Split('\')[1]
6072
6069
$IdentityFilter += "(samAccountName=$ObjectName)"
6073
6070
$SearcherArguments['Domain'] = $ObjectDomain
6074
- Write-Verbose "[Get-DomainUser ] Extracted domain '$ObjectDomain' from '$IdentityInstance'"
6071
+ Write-Verbose "[Get-DomainObject ] Extracted domain '$ObjectDomain' from '$IdentityInstance'"
6075
6072
$ObjectSearcher = Get-DomainSearcher @SearcherArguments
6076
6073
}
6077
6074
}
6075
+ elseif ($IdentityInstance.Contains('.')) {
6076
+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
6077
+ }
6078
6078
else {
6079
- $IdentityInstance = $IdentityInstance.Replace('(', '\28').Replace(')', '\29')
6080
- if ($IdentityInstance -match '^S-1-.*') {
6081
- $IdentityFilter += "(objectsid=$IdentityInstance)"
6082
- }
6083
- elseif ($IdentityInstance -match '^(CN|OU|DC)=.*') {
6084
- $IdentityFilter += "(distinguishedname=$IdentityInstance)"
6085
- }
6086
- else {
6087
- try {
6088
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
6089
- $IdentityFilter += "(objectguid=$GuidByteString)"
6090
- }
6091
- catch {
6092
- if ($IdentityInstance.Contains('.')) {
6093
- $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
6094
- }
6095
- else {
6096
- $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(displayname=$IdentityInstance))"
6097
- }
6098
- }
6099
- }
6079
+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(displayname=$IdentityInstance))"
6100
6080
}
6101
6081
}
6102
6082
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
@@ -6785,19 +6765,15 @@ Custom PSObject with ACL entries.
6785
6765
elseif ($IdentityInstance -match '^(CN|OU|DC)=.*') {
6786
6766
$IdentityFilter += "(distinguishedname=$IdentityInstance)"
6787
6767
}
6768
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
6769
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
6770
+ $IdentityFilter += "(objectguid=$GuidByteString)"
6771
+ }
6772
+ elseif ($IdentityInstance.Contains('.')) {
6773
+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
6774
+ }
6788
6775
else {
6789
- try {
6790
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
6791
- $IdentityFilter += "(objectguid=$GuidByteString)"
6792
- }
6793
- catch {
6794
- if ($IdentityInstance.Contains('.')) {
6795
- $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
6796
- }
6797
- else {
6798
- $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(displayname=$IdentityInstance))"
6799
- }
6800
- }
6776
+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(displayname=$IdentityInstance))"
6801
6777
}
6802
6778
}
6803
6779
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
@@ -8671,11 +8647,19 @@ Custom PSObject with translated group property fields.
8671
8647
$IdentityFilter = ''
8672
8648
$Filter = ''
8673
8649
$Identity | Where-Object {$_} | ForEach-Object {
8674
- $IdentityInstance = $_
8675
-
8676
- if ($IdentityInstance -match '.+\\.+') {
8677
- # DOMAIN\groupname
8678
- $ConvertedIdentityInstance = $IdentityInstance | Convert-ADName -OutputType Canonical
8650
+ $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
8651
+ if ($IdentityInstance -match '^S-1-') {
8652
+ $IdentityFilter += "(objectsid=$IdentityInstance)"
8653
+ }
8654
+ elseif ($IdentityInstance -match '^CN=') {
8655
+ $IdentityFilter += "(distinguishedname=$IdentityInstance)"
8656
+ }
8657
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
8658
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
8659
+ $IdentityFilter += "(objectguid=$GuidByteString)"
8660
+ }
8661
+ elseif ($IdentityInstance.Contains('\')) {
8662
+ $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical
8679
8663
if ($ConvertedIdentityInstance) {
8680
8664
$GroupDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
8681
8665
$GroupName = $IdentityInstance.Split('\')[1]
@@ -8686,24 +8670,10 @@ Custom PSObject with translated group property fields.
8686
8670
}
8687
8671
}
8688
8672
else {
8689
- $IdentityInstance = $IdentityInstance.Replace('(', '\28').Replace(')', '\29')
8690
- if ($IdentityInstance -match '^S-1-.*') {
8691
- $IdentityFilter += "(objectsid=$IdentityInstance)"
8692
- }
8693
- elseif ($IdentityInstance -match '^CN=.*') {
8694
- $IdentityFilter += "(distinguishedname=$IdentityInstance)"
8695
- }
8696
- else {
8697
- try {
8698
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
8699
- $IdentityFilter += "(objectguid=$GuidByteString)"
8700
- }
8701
- catch {
8702
- $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance))"
8703
- }
8704
- }
8673
+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance))"
8705
8674
}
8706
8675
}
8676
+
8707
8677
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
8708
8678
$Filter += "(|$IdentityFilter)"
8709
8679
}
@@ -9396,10 +9366,19 @@ http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-
9396
9366
$IdentityFilter = ''
9397
9367
$Filter = ''
9398
9368
$Identity | Where-Object {$_} | ForEach-Object {
9399
- $IdentityInstance = $_
9400
- if ($IdentityInstance -match '.+\\.+') {
9401
- # DOMAIN\groupname
9402
- $ConvertedIdentityInstance = $IdentityInstance | Convert-ADName -OutputType Canonical
9369
+ $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
9370
+ if ($IdentityInstance -match '^S-1-') {
9371
+ $IdentityFilter += "(objectsid=$IdentityInstance)"
9372
+ }
9373
+ elseif ($IdentityInstance -match '^CN=') {
9374
+ $IdentityFilter += "(distinguishedname=$IdentityInstance)"
9375
+ }
9376
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
9377
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
9378
+ $IdentityFilter += "(objectguid=$GuidByteString)"
9379
+ }
9380
+ elseif ($IdentityInstance.Contains('\')) {
9381
+ $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical
9403
9382
if ($ConvertedIdentityInstance) {
9404
9383
$GroupDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
9405
9384
$GroupName = $IdentityInstance.Split('\')[1]
@@ -9410,24 +9389,10 @@ http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-
9410
9389
}
9411
9390
}
9412
9391
else {
9413
- $IdentityInstance = $IdentityInstance.Replace('(', '\28').Replace(')', '\29')
9414
- if ($IdentityInstance -match '^S-1-.*') {
9415
- $IdentityFilter += "(objectsid=$IdentityInstance)"
9416
- }
9417
- elseif ($IdentityInstance -match '^CN=.*') {
9418
- $IdentityFilter += "(distinguishedname=$IdentityInstance)"
9419
- }
9420
- else {
9421
- try {
9422
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
9423
- $IdentityFilter += "(objectguid=$GuidByteString)"
9424
- }
9425
- catch {
9426
- $IdentityFilter += "(samAccountName=$IdentityInstance)"
9427
- }
9428
- }
9392
+ $IdentityFilter += "(samAccountName=$IdentityInstance)"
9429
9393
}
9430
9394
}
9395
+
9431
9396
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
9432
9397
$Filter += "(|$IdentityFilter)"
9433
9398
}
0 commit comments