Get-AdUser无法转换为类型system.string

时间:2019-11-20 13:45:51

标签: powershell active-directory

我正在尝试运行下面的get-aduser查询,但不断收到错误Get-AdUser无法转换为system.string类型。知道可能是什么问题吗? TIA

$Base = (Get-ADOrganizationalUnit -Filter {(Name -like "Department")}).DistinguishedName

Get-ADUser -Filter *  -SearchBase $Base -Properties Name

1 个答案:

答案 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
    }