使用Get-ADUser -Filter {displayname -like $ displayname}

时间:2019-07-19 14:49:55

标签: powershell active-directory

我想查看一个显示名称是否被多个帐户共享。

我正在使用代码(Get-ADUser -Filter {displayname -like $name}).Count

这有时会产生正确的结果,有时甚至根本没有结果。正确设置了所有帐户,名称末尾没有空格。

3 个答案:

答案 0 :(得分:0)

您可以使用以下代码:

Get-ADUser -Filter {displayname -like $name} | measure | select -ExpandProperty Count

这是因为仅返回一个用户时,它不会被视为集合,而是一个用户对象。
使用measureMeasure-Object)可以避免此问题。
如果没有返回用户,您将得到0,如果仅返回一个用户,您将得到1,如果返回了多个用户,您将得到实际的用户数。

答案 1 :(得分:0)

问题在于,当只有一个结果时,将返回一个对象,而不是一个集合。由于该对象不包含.Count属性,因此您的语句将不返回任何内容。

您可以使用数组文字(@())将输出强制为集合

(@(Get-ADUser -Filter {displayname -like $name})).Count

即使结果为一或零,上述方法也将始终返回集合的计数。

答案 2 :(得分:0)

Ansgar

这会做什么?

$Filter = "displayname -like $name"
(Get-ADUser -Filter $Filter).Count

我似乎记得这些cmdlet不喜欢过滤器语法中的变量。