Como extrair usuários de vários AD

Como extrair usuários de vários AD

Preciso extrair um arquivo contendo todos os meus AD's. Estou tentando fazer isso com Get-ADuser. Porém, como o -Searchbase não aceita múltiplas fontes, fiz algo assim:

    'DC=AD1,DC=net','DC=1D2,DC=net','DC=AD3,DC=net','DC=AD4,DC=net' |
foreach-object{
get-aduser -SearchBase $_ -Filter { ( Enabled -eq $True ) -and ( (sn -ne 'Empty') -or (givenName  -ne 'empty')) -and ( (telephoneNumber -ne 'empty') -or (mobile -ne 'empty'))} -Properties * |Select sn,givenName,title,department,company,telephoneNumber,mobile,mail,employeeType,physicalDeliveryOfficeName,extensionAttribute15 | Export-CSV "c:\temp\Liste_collaborateurs.csv" -Encoding UTF8 -Delimiter ";" -NoTypeInformation
}

Mas quando executo, recebo este erro 3 vezes:

get-aduser : O distintoName fornecido deve pertencer a uma das seguintes partições: 'DC=bva,DC=net , CN=Configuration,DC=bva,DC=net , CN=Schema,CN=Configuration,DC= bva,DC=net , DC=DomainDnsZones,DC=bva,DC=net , DC=ForestDnsZones,DC=bva,DC=net'. Em C:\Users\adm.wfd\Desktop\getaduser.ps1:3 char:1 + get-aduser -SearchBase $_ -Filter { ( Enabled -eq $True ) -and ( (sn -ne 'Empty' .. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument: (:) [Get-ADUser], ArgumentException + FullyQualifiedErrorId: ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Comm ands.GetADUser

Acho que os três tempos são para cada AD ao qual meu servidor não está conectado. Não consigo executar meu comando em cada DC ...

Como posso obter meu csv com todos os meus usuários em um único servidor?

Obrigado por suas respostas

Responder1

Tem certeza de que está usando os controladores de domínio corretos? Ou a ortografia e a ordem se encaixam? Testei seu script em meu próprio ambiente com vários controladores de domínio e funcionou. Sua mensagem de erro só apareceu se eu inserisse as informações erradas.

O comando funciona com controladores de domínio individuais quando não é executado no loop?

E se você iniciasse seu script diretamente no controlador de domínio?

Eu não testei sozinho.

Assim.

$Servers = 'server1','server2'            
ForEach ($Server in $Servers) {            
    Invoke-Command -ComputerName $Server -ScriptBlock {            
        get-aduser -Filter { ( Enabled -eq $True ) -and ( (sn -ne 'Empty') -or (givenName  -ne 'empty')) -and ( (telephoneNumber -ne 'empty') -or (mobile -ne 'empty'))} -Properties * |Select sn,givenName,title,department,company,telephoneNumber,mobile,mail,employeeType,physicalDeliveryOfficeName,extensionAttribute15 | Export-CSV "c:\temp\Liste_collaborateurs.csv" -Encoding UTF8 -Delimiter ";" -NoTypeInformation         
    }            
} 

informação relacionada