Мне нужно извлечь файл, содержащий все мои AD. Я пытаюсь сделать это с помощью Get-ADuser. Однако, поскольку -Searchbase не принимает несколько источников, я сделал что-то вроде этого:
'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
}
Но когда я его запускаю, я получаю эту ошибку 3 раза:
get-aduser : Указанное differentName должно принадлежать одному из следующих разделов: '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'. В C:\Users\adm.wfd\Desktop\getaduser.ps1:3 символ:1 + get-aduser -SearchBase $_ -Filter { ( Включено -eq $True ) -and ( (sn -ne 'Пусто' ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Comm ands.GetADUser
Думаю, эти 3 раза для каждого AD, к которому не подключен мой сервер. Я не могу запустить свою команду на каждом DC...
Как мне получить CSV-файл со всеми моими пользователями на одном сервере?
Спасибо за ваши ответы.
решение1
Вы уверены, что используете правильные контроллеры домена? Или написание и порядок совпадают? Я протестировал ваш скрипт в своей среде с несколькими контроллерами домена, и он работал. Ваше сообщение об ошибке появлялось только в том случае, если я вводил неверную информацию.
Работает ли команда с отдельными контроллерами домена, если она не выполняется в цикле?
А что, если запустить скрипт непосредственно на контроллере домена?
Я сам не проверял.
Как это.
$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
}
}