我正在尝试运行下面的get-aduser查询,但不断收到错误Get-AdUser无法转换为system.string类型。知道可能是什么问题吗? TIA
$Base = (Get-ADOrganizationalUnit -Filter {(Name -like "Department")}).DistinguishedName
Get-ADUser -Filter * -SearchBase $Base -Properties Name
答案 0 :(得分:1)
我对此进行了测试,可以确认如果您对Get-ADOrganizationalUnit
的调用返回了一个以上的OU,则DistinguishedName
属性将是一个数组而不是一个纯字符串。因此,您将需要将呼叫更改为Get-ADOrganizationalUnit
,以使其仅返回一个。
您可以通过使用-ResultSetSize
参数来仅使用第一个结果来做到这一点:
$Base = (Get-ADOrganizationalUnit -Filter {(Name -like "Department")} -ResultSetSize 1).DistinguishedName
或更改Filter
,使其仅匹配一个OU。我假设您正在使用-like
,因为您在实际代码中使用了通配符,因此您可能只需要更加具体即可。
更新::如果希望所有匹配的OU中都包含用户,则可以使用ForEach-Object
:
Get-ADOrganizationalUnit -Filter {(Name -like "Department")} |
ForEach {
Get-ADUser -Filter * -SearchBase $_.DistinguishedName -Properties Name
}