@@ -4706,9 +4706,19 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
47064706 $IdentityFilter = ''
47074707 $Filter = ''
47084708 $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
47124722 if ($ConvertedIdentityInstance) {
47134723 $UserDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
47144724 $UserName = $IdentityInstance.Split('\')[1]
@@ -4719,26 +4729,10 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
47194729 }
47204730 }
47214731 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)"
47404733 }
47414734 }
4735+
47424736 if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
47434737 $Filter += "(|$IdentityFilter)"
47444738 }
@@ -5751,28 +5745,21 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
57515745 $Filter = ''
57525746 $Identity | Where-Object {$_} | ForEach-Object {
57535747 $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
5754- if ($IdentityInstance -match '^S-1-.* ') {
5748+ if ($IdentityInstance -match '^S-1-') {
57555749 $IdentityFilter += "(objectsid=$IdentityInstance)"
57565750 }
5757- elseif ($IdentityInstance -match '^CN=.* ') {
5751+ elseif ($IdentityInstance -match '^CN=') {
57585752 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
57595753 }
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)"
57625760 }
57635761 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)"
57765763 }
57775764 }
57785765 if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
@@ -6063,40 +6050,33 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
60636050 $IdentityFilter = ''
60646051 $Filter = ''
60656052 $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
60696066 if ($ConvertedIdentityInstance) {
60706067 $ObjectDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
60716068 $ObjectName = $IdentityInstance.Split('\')[1]
60726069 $IdentityFilter += "(samAccountName=$ObjectName)"
60736070 $SearcherArguments['Domain'] = $ObjectDomain
6074- Write-Verbose "[Get-DomainUser ] Extracted domain '$ObjectDomain' from '$IdentityInstance'"
6071+ Write-Verbose "[Get-DomainObject ] Extracted domain '$ObjectDomain' from '$IdentityInstance'"
60756072 $ObjectSearcher = Get-DomainSearcher @SearcherArguments
60766073 }
60776074 }
6075+ elseif ($IdentityInstance.Contains('.')) {
6076+ $IdentityFilter += "(|(samAccountName=$IdentityInstance)(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
6077+ }
60786078 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))"
61006080 }
61016081 }
61026082 if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
@@ -6785,19 +6765,15 @@ Custom PSObject with ACL entries.
67856765 elseif ($IdentityInstance -match '^(CN|OU|DC)=.*') {
67866766 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
67876767 }
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+ }
67886775 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))"
68016777 }
68026778 }
68036779 if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
@@ -8671,11 +8647,19 @@ Custom PSObject with translated group property fields.
86718647 $IdentityFilter = ''
86728648 $Filter = ''
86738649 $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
86798663 if ($ConvertedIdentityInstance) {
86808664 $GroupDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
86818665 $GroupName = $IdentityInstance.Split('\')[1]
@@ -8686,24 +8670,10 @@ Custom PSObject with translated group property fields.
86868670 }
86878671 }
86888672 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))"
87058674 }
87068675 }
8676+
87078677 if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
87088678 $Filter += "(|$IdentityFilter)"
87098679 }
@@ -9396,10 +9366,19 @@ http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-
93969366 $IdentityFilter = ''
93979367 $Filter = ''
93989368 $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
94039382 if ($ConvertedIdentityInstance) {
94049383 $GroupDomain = $ConvertedIdentityInstance.SubString(0, $ConvertedIdentityInstance.IndexOf('/'))
94059384 $GroupName = $IdentityInstance.Split('\')[1]
@@ -9410,24 +9389,10 @@ http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-
94109389 }
94119390 }
94129391 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)"
94299393 }
94309394 }
9395+
94319396 if ($IdentityFilter -and ($IdentityFilter.Trim() -ne '') ) {
94329397 $Filter += "(|$IdentityFilter)"
94339398 }
0 commit comments