0

Мне нужно передать в список пользователей и получить обратно CSV с названием, SamAccountName, электронная почтаPowershell AD: Экспорт CSV определенных полей на основе CSV-ввода имен?

My Input CSV выглядит следующим образом:

"John Doe" 
"Jane Doe" 

Вот текущий код, я использую. Я не уверен, в чем проблема. Пользователи действительно существуют под «DC» указанный ...

Import-Module ActiveDirectory 
Function Get-ADUsersDetailsCSV 
{ 
    [CmdletBinding()] 
    Param 
    (
    [Parameter(Mandatory=$True,Position=1)] 
    [String]$InCSV, 

    [Parameter(Mandatory=$True)] 
    [String]$OutCSV 
    ) 

If($InCSV) 
{ 
    If(Test-Path -Path $InCSV) 
    { 
     $USERS = Import-CSV $InCSV -Header Name 
     $USERS|Foreach{Get-ADUser $_.Name -Properties * |Select Name, SAMAccountName, mail}|Export-CSV -Path $OutCSV 

    } #End Test that the files exist 

    Else 
    { 
     Write-Warning "Cannot find path '$InCSV' because it does not exist." 
    } 


} #End Ensure Input and Output files were provided 

} #End Function Get-UsersDetailsCSV 

Вот ошибка:

Get-ADUser : Cannot find an object with identity: 'John Doe' under: 'DC=blah,DC=com'. 
At U:\data\GetADUserInfo PS Script\GetADUsersDetailsCSV.psm1:19 char:28 
+    $USERS|Foreach{Get-ADUser $_.Name -Properties * |Select Name, SAMAcc ... 
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : ObjectNotFound: (Name:ADUser) [Get-ADUser], ADIdentityNotFoundException 
+ FullyQualifiedErrorId : Cannot find an object with identity: 'John Doe' under: 'DC=blah,DC=com'.,Microsoft.ActiveDirectory.Management.Commands.GetADUser 
+1

Какие поля вы хотите приобрести? – websch01ar

+0

Мне нужен окончательный CSV с именем, DisplayName, SamAccountName и электронной почтой – trueimage

ответ

1

Основываясь на вашу обратную связь выше, я буду вносить изменения в этот ответ. Однако нет необходимости запускать Get-ADUser дважды, поскольку вы получаете как имя, так и свойства электронной почты с объектом Get-ADUser.

$user = Get-ADuser -Filer { Name -eq $Name } 

Кроме того, вы можете соединять разные объекты вместе. Попробуйте это и посмотрите, что вы получаете

$ExportCSVPath = "C:\Exportedcsv.csv" 
$users = (Import-Csv -Path $CsvFilePath) | 
    % {Get-ADUser -Filter { Name -eq $_.DisplayName } | 
     Select -ExpandProperty SamAccountName, mail } | 
      Export-Csv $ExportCSVPath 
+0

Прошу прощения, я не знаю, как использовать это в том, что у меня есть, или если это все, что мне нужно? – trueimage

+0

$ Пользователи будут объектом, который содержит имя SamAccountName и адрес электронной почты. Как и отображаемое имя, я верю. Почему бы вам не отвести эту последнюю трубку и запустить ее, чтобы посмотреть, что произойдет. – websch01ar

+0

PowerShell> (Import-Csv -Path. \ Namestest.csv) | % {Get-ADUser -Filter {Name -eq $ _. DisplayName} | Выберите -ExpandProperty SamAccountName, mail} – trueimage

Смежные вопросы