我想查看一个显示名称是否被多个帐户共享。
我正在使用代码(Get-ADUser -Filter {displayname -like $name}).Count
。
这有时会产生正确的结果,有时甚至根本没有结果。正确设置了所有帐户,名称末尾没有空格。
答案 0 :(得分:0)
您可以使用以下代码:
Get-ADUser -Filter {displayname -like $name} | measure | select -ExpandProperty Count
这是因为仅返回一个用户时,它不会被视为集合,而是一个用户对象。
使用measure
(Measure-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不喜欢过滤器语法中的变量。