Powershell Get AdUser无法转换为system.string类型
我正在尝试运行下面的get-aduser查询,但一直出现错误get-aduser无法转换为system.string类型。知道有什么问题吗?短暂性脑缺血发作Powershell Get AdUser无法转换为system.string类型,powershell,active-directory,Powershell,Active Directory,我正在尝试运行下面的get-aduser查询,但一直出现错误get-aduser无法转换为system.string类型。知道有什么问题吗?短暂性脑缺血发作 $Base = (Get-ADOrganizationalUnit -Filter {(Name -like "Department")}).DistinguishedName Get-ADUser -Filter * -SearchBase $Base -Properties Name 我对此进行了测试,我可以确认,如果调用Get-
$Base = (Get-ADOrganizationalUnit -Filter {(Name -like "Department")}).DistinguishedName
Get-ADUser -Filter * -SearchBase $Base -Properties Name
我对此进行了测试,我可以确认,如果调用Get-ADOrganizationalUnit返回多个OU,那么DifferentizedName属性将是一个数组,而不是一个普通字符串。因此,您需要更改呼叫以获取ADOrganizationalUnit,以便它只返回一个 可以通过使用-ResultSetSize参数仅使用第一个结果来实现这一点:
$Base = (Get-ADOrganizationalUnit -Filter {(Name -like "Department")} -ResultSetSize 1).DistinguishedName
或者更改筛选器,使其仅与一个OU匹配。我假设您使用了-like,因为您在实际代码中使用了通配符,所以您可能需要更具体一些
更新:如果您希望用户来自所有匹配的OU,则可以使用:
我猜,$base是一个OU名称数组,而不是一个OU名称-SearchBase需要单个字符串,而不是集合。请检查$base的内容以确保。如果它是一个数组,那么你需要使用一些循环结构来一次处理一个,或者改进你的过滤器以得到你想要的。谢谢,我有大约5个OU要处理。resultsetsize是否只执行1个OU?是。你想从所有5个用户中获取用户吗?是的,如果可能的话,非常简单。我更新了我的答案,告诉你怎么做。
Get-ADOrganizationalUnit -Filter {(Name -like "Department")} |
ForEach {
Get-ADUser -Filter * -SearchBase $_.DistinguishedName -Properties Name
}