@@ -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 '') ) {
@@ -6784,19 +6764,15 @@ Custom PSObject with ACL entries.
6784
6764
elseif ($IdentityInstance -match '^(CN|OU|DC)=.*') {
6785
6765
$IdentityFilter += "(distinguishedname=$IdentityInstance)"
6786
6766
}
6767
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
6768
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
6769
+ $IdentityFilter += "(objectguid=$GuidByteString)"
6770
+ }
6771
+ elseif ($IdentityInstance.Contains('.')) {
6772
+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
6773
+ }
6787
6774
else {
6788
- try {
6789
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
6790
- $IdentityFilter += "(objectguid=$GuidByteString)"
6791
- }
6792
- catch {
6793
- if ($IdentityInstance.Contains('.')) {
6794
- $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
6795
- }
6796
- else {
6797
- $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(displayname=$IdentityInstance))"
6798
- }
6799
- }
6775
+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(displayname=$IdentityInstance))"
6800
6776
}
6801
6777
}
6802
6778
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
@@ -8669,11 +8645,19 @@ Custom PSObject with translated group property fields.
8669
8645
$IdentityFilter = ''
8670
8646
$Filter = ''
8671
8647
$Identity | Where-Object {$_} | ForEach-Object {
8672
- $IdentityInstance = $_
8673
-
8674
- if ($IdentityInstance -match '.+\\.+') {
8675
- # DOMAIN\groupname
8676
- $ConvertedIdentityInstance = $IdentityInstance | Convert-ADName -OutputType Canonical
8648
+ $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
8649
+ if ($IdentityInstance -match '^S-1-') {
8650
+ $IdentityFilter += "(objectsid=$IdentityInstance)"
8651
+ }
8652
+ elseif ($IdentityInstance -match '^CN=') {
8653
+ $IdentityFilter += "(distinguishedname=$IdentityInstance)"
8654
+ }
8655
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
8656
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
8657
+ $IdentityFilter += "(objectguid=$GuidByteString)"
8658
+ }
8659
+ elseif ($IdentityInstance.Contains('\')) {
8660
+ $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical
8677
8661
if ($ConvertedIdentityInstance) {
8678
8662
$GroupDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
8679
8663
$GroupName = $IdentityInstance.Split('\')[1]
@@ -8684,24 +8668,10 @@ Custom PSObject with translated group property fields.
8684
8668
}
8685
8669
}
8686
8670
else {
8687
- $IdentityInstance = $IdentityInstance.Replace('(', '\28').Replace(')', '\29')
8688
- if ($IdentityInstance -match '^S-1-.*') {
8689
- $IdentityFilter += "(objectsid=$IdentityInstance)"
8690
- }
8691
- elseif ($IdentityInstance -match '^CN=.*') {
8692
- $IdentityFilter += "(distinguishedname=$IdentityInstance)"
8693
- }
8694
- else {
8695
- try {
8696
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
8697
- $IdentityFilter += "(objectguid=$GuidByteString)"
8698
- }
8699
- catch {
8700
- $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance))"
8701
- }
8702
- }
8671
+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance))"
8703
8672
}
8704
8673
}
8674
+
8705
8675
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
8706
8676
$Filter += "(|$IdentityFilter)"
8707
8677
}
@@ -9394,10 +9364,19 @@ http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-
9394
9364
$IdentityFilter = ''
9395
9365
$Filter = ''
9396
9366
$Identity | Where-Object {$_} | ForEach-Object {
9397
- $IdentityInstance = $_
9398
- if ($IdentityInstance -match '.+\\.+') {
9399
- # DOMAIN\groupname
9400
- $ConvertedIdentityInstance = $IdentityInstance | Convert-ADName -OutputType Canonical
9367
+ $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
9368
+ if ($IdentityInstance -match '^S-1-') {
9369
+ $IdentityFilter += "(objectsid=$IdentityInstance)"
9370
+ }
9371
+ elseif ($IdentityInstance -match '^CN=') {
9372
+ $IdentityFilter += "(distinguishedname=$IdentityInstance)"
9373
+ }
9374
+ elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
9375
+ $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
9376
+ $IdentityFilter += "(objectguid=$GuidByteString)"
9377
+ }
9378
+ elseif ($IdentityInstance.Contains('\')) {
9379
+ $ConvertedIdentityInstance = $IdentityInstance.Replace('\28', '(').Replace('\29', ')') | Convert-ADName -OutputType Canonical
9401
9380
if ($ConvertedIdentityInstance) {
9402
9381
$GroupDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
9403
9382
$GroupName = $IdentityInstance.Split('\')[1]
@@ -9408,24 +9387,10 @@ http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-
9408
9387
}
9409
9388
}
9410
9389
else {
9411
- $IdentityInstance = $IdentityInstance.Replace('(', '\28').Replace(')', '\29')
9412
- if ($IdentityInstance -match '^S-1-.*') {
9413
- $IdentityFilter += "(objectsid=$IdentityInstance)"
9414
- }
9415
- elseif ($IdentityInstance -match '^CN=.*') {
9416
- $IdentityFilter += "(distinguishedname=$IdentityInstance)"
9417
- }
9418
- else {
9419
- try {
9420
- $GuidByteString = (-Join (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object {$_.ToString('X').PadLeft(2,'0')})) -Replace '(..)','\$1'
9421
- $IdentityFilter += "(objectguid=$GuidByteString)"
9422
- }
9423
- catch {
9424
- $IdentityFilter += "(samAccountName=$IdentityInstance)"
9425
- }
9426
- }
9390
+ $IdentityFilter += "(samAccountName=$IdentityInstance)"
9427
9391
}
9428
9392
}
9393
+
9429
9394
if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
9430
9395
$Filter += "(|$IdentityFilter)"
9431
9396
}
0 commit comments