@@ -4761,6 +4761,17 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
47614761 }
47624762 elseif ($IdentityInstance -match '^CN=') {
47634763 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
4764+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
4765+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
4766+ # and rebuild the domain searcher
4767+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
4768+ Write-Verbose "[Get-DomainUser] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
4769+ $SearcherArguments['Domain'] = $IdentityDomain
4770+ $UserSearcher = Get-DomainSearcher @SearcherArguments
4771+ if (-not $UserSearcher) {
4772+ Write-Warning "[Get-DomainUser] Unable to retrieve domain searcher for '$IdentityDomain'"
4773+ }
4774+ }
47644775 }
47654776 elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
47664777 $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
@@ -5789,7 +5800,6 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
57895800
57905801 PROCESS {
57915802 if ($CompSearcher) {
5792-
57935803 $IdentityFilter = ''
57945804 $Filter = ''
57955805 $Identity | Where-Object {$_} | ForEach-Object {
@@ -5799,6 +5809,17 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
57995809 }
58005810 elseif ($IdentityInstance -match '^CN=') {
58015811 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
5812+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
5813+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
5814+ # and rebuild the domain searcher
5815+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
5816+ Write-Verbose "[Get-DomainComputer] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
5817+ $SearcherArguments['Domain'] = $IdentityDomain
5818+ $CompSearcher = Get-DomainSearcher @SearcherArguments
5819+ if (-not $CompSearcher) {
5820+ Write-Warning "[Get-DomainComputer] Unable to retrieve domain searcher for '$IdentityDomain'"
5821+ }
5822+ }
58025823 }
58035824 elseif ($IdentityInstance.Contains('.')) {
58045825 $IdentityFilter += "(|(name=$IdentityInstance)(dnshostname=$IdentityInstance))"
@@ -6105,6 +6126,17 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
61056126 }
61066127 elseif ($IdentityInstance -match '^(CN|OU|DC)=') {
61076128 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
6129+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
6130+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
6131+ # and rebuild the domain searcher
6132+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
6133+ Write-Verbose "[Get-DomainObject] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
6134+ $SearcherArguments['Domain'] = $IdentityDomain
6135+ $ObjectSearcher = Get-DomainSearcher @SearcherArguments
6136+ if (-not $ObjectSearcher) {
6137+ Write-Warning "[Get-DomainObject] Unable to retrieve domain searcher for '$IdentityDomain'"
6138+ }
6139+ }
61086140 }
61096141 elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
61106142 $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
@@ -7637,6 +7669,17 @@ Custom PSObject with ACL entries.
76377669 }
76387670 elseif ($IdentityInstance -match '^(CN|OU|DC)=.*') {
76397671 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
7672+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
7673+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
7674+ # and rebuild the domain searcher
7675+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
7676+ Write-Verbose "[Get-DomainObjectAcl] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
7677+ $SearcherArguments['Domain'] = $IdentityDomain
7678+ $Searcher = Get-DomainSearcher @SearcherArguments
7679+ if (-not $Searcher) {
7680+ Write-Warning "[Get-DomainObjectAcl] Unable to retrieve domain searcher for '$IdentityDomain'"
7681+ }
7682+ }
76407683 }
76417684 elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
76427685 $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
@@ -8538,6 +8581,17 @@ Custom PSObject with translated OU property fields.
85388581 $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
85398582 if ($IdentityInstance -match '^OU=.*') {
85408583 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
8584+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
8585+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
8586+ # and rebuild the domain searcher
8587+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
8588+ Write-Verbose "[Get-DomainOU] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
8589+ $SearcherArguments['Domain'] = $IdentityDomain
8590+ $OUSearcher = Get-DomainSearcher @SearcherArguments
8591+ if (-not $OUSearcher) {
8592+ Write-Warning "[Get-DomainOU] Unable to retrieve domain searcher for '$IdentityDomain'"
8593+ }
8594+ }
85418595 }
85428596 else {
85438597 try {
@@ -8797,6 +8851,17 @@ Custom PSObject with translated site property fields.
87978851 $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
87988852 if ($IdentityInstance -match '^CN=.*') {
87998853 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
8854+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
8855+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
8856+ # and rebuild the domain searcher
8857+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
8858+ Write-Verbose "[Get-DomainSite] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
8859+ $SearcherArguments['Domain'] = $IdentityDomain
8860+ $SiteSearcher = Get-DomainSearcher @SearcherArguments
8861+ if (-not $SiteSearcher) {
8862+ Write-Warning "[Get-DomainSite] Unable to retrieve domain searcher for '$IdentityDomain'"
8863+ }
8864+ }
88008865 }
88018866 else {
88028867 try {
@@ -9055,6 +9120,17 @@ Custom PSObject with translated subnet property fields.
90559120 $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
90569121 if ($IdentityInstance -match '^CN=.*') {
90579122 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
9123+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
9124+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
9125+ # and rebuild the domain searcher
9126+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
9127+ Write-Verbose "[Get-DomainSubnet] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
9128+ $SearcherArguments['Domain'] = $IdentityDomain
9129+ $SubnetSearcher = Get-DomainSearcher @SearcherArguments
9130+ if (-not $SubnetSearcher) {
9131+ Write-Warning "[Get-DomainSubnet] Unable to retrieve domain searcher for '$IdentityDomain'"
9132+ }
9133+ }
90589134 }
90599135 else {
90609136 try {
@@ -9534,6 +9610,17 @@ Custom PSObject with translated group property fields.
95349610 }
95359611 elseif ($IdentityInstance -match '^CN=') {
95369612 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
9613+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
9614+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
9615+ # and rebuild the domain searcher
9616+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
9617+ Write-Verbose "[Get-DomainGroup] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
9618+ $SearcherArguments['Domain'] = $IdentityDomain
9619+ $GroupSearcher = Get-DomainSearcher @SearcherArguments
9620+ if (-not $GroupSearcher) {
9621+ Write-Warning "[Get-DomainGroup] Unable to retrieve domain searcher for '$IdentityDomain'"
9622+ }
9623+ }
95379624 }
95389625 elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
95399626 $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
@@ -10275,6 +10362,17 @@ http://www.powershellmagazine.com/2013/05/23/pstip-retrieve-group-membership-of-
1027510362 }
1027610363 elseif ($IdentityInstance -match '^CN=') {
1027710364 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
10365+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
10366+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
10367+ # and rebuild the domain searcher
10368+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
10369+ Write-Verbose "[Get-DomainGroupMember] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
10370+ $SearcherArguments['Domain'] = $IdentityDomain
10371+ $GroupSearcher = Get-DomainSearcher @SearcherArguments
10372+ if (-not $GroupSearcher) {
10373+ Write-Warning "[Get-DomainGroupMember] Unable to retrieve domain searcher for '$IdentityDomain'"
10374+ }
10375+ }
1027810376 }
1027910377 elseif ($IdentityInstance -imatch '^[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}$') {
1028010378 $GuidByteString = (([Guid]$IdentityInstance).ToByteArray() | ForEach-Object { '\' + $_.ToString('X2') }) -join ''
@@ -12081,6 +12179,17 @@ The raw DirectoryServices.SearchResult object, if -Raw is enabled.
1208112179 $IdentityInstance = $_.Replace('(', '\28').Replace(')', '\29')
1208212180 if ($IdentityInstance -match 'LDAP://|^CN=.*') {
1208312181 $IdentityFilter += "(distinguishedname=$IdentityInstance)"
12182+ if ((-not $PSBoundParameters['Domain']) -and (-not $PSBoundParameters['SearchBase'])) {
12183+ # if a -Domain isn't explicitly set, extract the object domain out of the distinguishedname
12184+ # and rebuild the domain searcher
12185+ $IdentityDomain = $IdentityInstance.SubString($IdentityInstance.IndexOf('DC=')) -replace 'DC=','' -replace ',','.'
12186+ Write-Verbose "[Get-DomainGPO] Extracted domain '$IdentityDomain' from '$IdentityInstance'"
12187+ $SearcherArguments['Domain'] = $IdentityDomain
12188+ $GPOSearcher = Get-DomainSearcher @SearcherArguments
12189+ if (-not $GPOSearcher) {
12190+ Write-Warning "[Get-DomainGPO] Unable to retrieve domain searcher for '$IdentityDomain'"
12191+ }
12192+ }
1208412193 }
1208512194 elseif ($IdentityInstance -match '{.*}') {
1208612195 $IdentityFilter += "(name=$IdentityInstance)"
0 commit comments