1

我有一个来自整个域的用户名的 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 的情况下运行,它只会拉取所有内容。关于如何使这项工作的任何建议?

4

1 回答 1

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 循环,因为它看起来像您尝试主要使用管道的地方。还添加了一个测试以跳过空白行或空白/空字符串的用户名。删除了SearchBaseand ,Filter因为您正在基于身份进行查找,因此无法使用命令中的那些。因为没有允许您使用所有参数的参数集。Get-Help Get-ADUser显示可用的参数集。

于 2017-11-07T19:20:27.220 回答