如何切换到另一个域并获取aduser

时间:2014-12-17 19:13:20

标签: powershell active-directory cross-domain

我在DomainA的服务器上。我可以使用Get-ADUser并且它可以正常工作。

现在在DomainA和DomainB之间建立了一个信任。我想切换到DomainB并获取OU=New Users, DC=DomainB, DC=com中的所有用户。

我尝试了这些,但是我收到了错误。

$FetchDomainB = Get-ADUser -SearchBase "OU=New Users, DC=DomainB, DC=com"

这要求我提供过滤器,然后我输入了电子邮件地址然后它会抛出一个错误说"下面提供的专有名称为dc = DomainA,dc = net"

以下代码也会抛出相同的错误。

PS C:\> $test = Get-ADUser -SearchBase "dc=DomainB,dc=com" -filter {EmailAddress -like "*Smith_Karla*"} -Properties EmailAddress

5 个答案:

答案 0 :(得分:26)

尝试使用-Server属性在DomainB中指定DC。例如:

Get-ADUser -Server "dc01.DomainB.local" -Filter {EmailAddress -like "*Smith_Karla*"} -Properties EmailAddress

答案 1 :(得分:6)

我只想补充一点,如果您不完全了解域控制器的名称,则可以获取最接近的域控制器,并将其主机名传递给-Server参数。

$dc = Get-ADDomainController -DomainName example.com -Discover -NextClosestSite

Get-ADUser -Server $dc.HostName[0] `
    -Filter { EmailAddress -Like "*Smith_Karla*" } `
    -Properties EmailAddress

答案 2 :(得分:4)

get-aduser -Server "servername" -Identity %username% -Properties *

get-aduser -Server "testdomain.test.net" -Identity testuser -Properties *

当您拥有用户名时,这些工作。键入的次数也少于使用-filter属性。

编辑:格式化。

答案 3 :(得分:1)

Drew Chapin和你们所有人的最佳解决方案TNX:

我只想补充一点,如果您不完全了解域控制器的名称,则可以获取最接近的域控制器,并将其主机名传递给-Server参数。

$dc = Get-ADDomainController -DomainName example.com -Discover -NextClosestSite

Get-ADUser -Server $dc.HostName[0] `
    -Filter { EmailAddress -Like "*Smith_Karla*" } `
    -Properties EmailAddress

我的脚本:

$dc = Get-ADDomainController -DomainName example.com -Discover -NextClosestSite
 Get-ADUser -Server $dc.HostName[0] ` -Filter { EmailAddress -Like "*Smith_Karla*" } `  -Properties EmailAddress | Export-CSV "C:\Scripts\Email.csv

答案 4 :(得分:0)

您可以使用以下脚本一个接一个地尝试多个域:

在这里,首先我们检查用户是否存在于域中,如果存在,我们将获取电子邮件地址。否则我们检查后续域。

$users = Get-Content D:\UserBase\users.txt
 foreach($user in $users)
 {
     if([bool] (Get-ADUser -Filter { SamAccountName -eq $user } -Server DomainA.com))
     {
        Get-ADUser -Filter { SamAccountName -eq $user } -Server DomainA.com -Properties Mail |Select-Object -ExpandProperty Mail  | Out-file D:\UserBase\emails.txt -Append
     } 
     elseif([bool] (Get-ADUser -Filter { SamAccountName -eq $user } -Server DomainB.com))
     {
      Get-ADUser -Filter { SamAccountName -eq $user } -Server DomainB.com -Properties Mail |Select-Object -ExpandProperty Mail  | Out-file D:\UserBase\emails.txt -Append
     } 

此外,您可以使用以下脚本获取组织中的域列表:

  $ForestObj = Get-ADForest -Server $env:USERDOMAIN
foreach($Domain in $ForestObj.Domains) {
    Get-ADDomainController -Filter * -Server $Domain | select Domain,HostName,Site
    }