Powershell Get-ADuser和Import-CSV

时间:2016-03-08 20:12:22

标签: csv powershell

我正在尝试导入包含以下字段的CSV文件:

Ticket      User
1234657     ABC1234
2456875     ABC9876

用户= SamAccountName

我有以下代码:

 $File = Import-CSV C:\\file.csv
 $File | ForEach  { Get-ADUser -Identity ($_.User) -Properties * | Select-Object SamAccountName, DisplayName, @{Name=’Ticket';Expression={$_.ticket}}}

输出如下所示:

SamAccountName       DisplayName          Ticket
--------------       -----------          ------
ABC1234              John, Doe
ABC9876              Jane, Doe

因此,在输出表格中没有填充票证的情况正在发生...... 我希望它看起来如下:

SamAccountName       DisplayName          Ticket
--------------       -----------          ------
ABC1234              John, Doe            1234657
ABC9876              Jane, Doe            2456875

有人知道我的代码出错吗?

另外,如果我只做$ _。票证而不是表达式语句,它会将单个票号作为我的标题... 例如:

SamAccountName  : ABC1234
DisplayName     : John, Doe
Description     : New Account
enabled         : True
1234657         : {}

SamAccountName  : ABC9876
DisplayName     : Jane, Doe
Description     : New Account
enabled         : True
2456875         : {}

2 个答案:

答案 0 :(得分:0)

当您到达$_时,<Get-ADUserSelect-Object的输出。您需要在foreach循环开始时保存票证。尝试:

$File = Import-CSV C:\\file.csv
 $File | ForEach  {
    #Save ticket
    $ticket = $_.ticket

    Get-ADUser -Identity ($_.User) -Properties * |
    Select-Object SamAccountName, DisplayName, @{Name='Ticket';Expression={$ticket}}
}

答案 1 :(得分:0)

将Get-ADUser的结果传递给Select-Object时,就是$ _中的内容。不是您的原始CSV。这是一个解决方案:

 $File | ForEach  {$t = $_.Ticket; Get-ADUser -Identity ($_.User) -Properties * | Select-Object SamAccountName, DisplayName, @{Name=’Ticket';Expression={$t}}}