我有来自我所有域的用户名的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的情况下运行它只会拉动所有内容。有关如何使其工作的任何建议吗?
答案 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循环以提高可读性,因为它看起来像是在尝试主要使用管道的地方。还添加了一个测试,以跳过空白行或空白字符串的用户名。已删除SearchBase
和Filter
,因为您根据身份查找不能在命令中使用这些内容。因为没有一个参数集可以让你使用它们。 Get-Help Get-ADUser
显示可用的参数集。