将AD用户从CSV与特定OU进行比较

时间:2017-11-07 18:21:06

标签: powershell csv active-directory ou

我有来自我所有域的用户名的CSV列表,我正在尝试将列表与特定OU进行比较,并将匹配项发送到另一个文件。我是PowerShell的新手,所以在经过大量研究并与其他脚本进行比较后,我想出了这个:

$users = Import-csv C:\Users\me\Desktop\'RSA.csv' 
$(ForEach ($user in $users) 
{
Get-AdUser -identity $user -SearchBase "ou=Sub,ou=Root,dc=My,dc=Domain,dc=Name" -Filter * 
}) |
Select-Object SamAccountName |
Export-CSV -Path C:\Users\me\Downloads\test\output.csv -NoTypeInformation 

当我运行它时,我收到错误“Get-ADUser:无法验证参数'Identity'的参数。参数上的Identity属性 是空的还是空的。“如果我在没有-identity $ user的情况下运行它只会拉动所有内容。有关如何使其工作的任何建议吗?

1 个答案:

答案 0 :(得分:0)

当您调用Get-ADUser而不是仅使用用户名给它一个字符串时,您将传入一个名为username的对象。您可以使用Select-Object -ExpandProperty Username或引用just属性。

Import-Csv 'C:\Users\me\Desktop\RSA.csv' | 
    Where-Object {(!([string]::IsNullorWhiteSpace($_.UserName)))} |
    ForEach-Object {
        Get-ADUser -Identity $_.UserName
    } |
    Select-Object SamAccountName |
    Export-CSV -Path C:\Users\me\Downloads\test\output.csv -NoTypeInformation 

注意:更改为ForEach-Object循环以提高可读性,因为它看起来像是在尝试主要使用管道的地方。还添加了一个测试,以跳过空白行或空白字符串的用户名。已删除SearchBaseFilter,因为您根据身份查找不能在命令中使用这些内容。因为没有一个参数集可以让你使用它们。 Get-Help Get-ADUser显示可用的参数集。