我正在编写一个脚本来创建新的AD用户并进行测试以确保找不到现有的displayname
,因为New-ADUser
如果找到则会失败。有人可以帮助我理解为什么我可能永远不会从以下数组列表中得到真正的结果吗?
$ExistingDNs= Get-ADUser -SearchBase 'OU=whateverOU' -Filter * -Property displayname | select displayname | Out-string
我的目标是加载OU中的所有现有displayname
,然后将其与我读取CSV文件以创建displayname
的方法进行比较,但我可以'似乎让它回归真实。
If ($ExistingDNs.DisplayName -contains $DisplayName)
我被告知这应该可行,但是当我尝试查看数组时它是空的?只有$ExistingDSs
在ISE中以可视方式向我显示列表,在那里我可以清楚地看到存在与我的CSV文件中相同的名称,但是找不到匹配并且永远不会返回为真,即使两者都是字符串值我相信。
答案 0 :(得分:1)
我确定这是因为您正在使用select displayname
来破坏$ExistingDNs
将创建的对象数组。目前,当您真正需要字符串数组时,$ExistingDNs = Get-ADUser -SearchBase 'OU=whateverOU' -Filter * -Property displayname | select -ExpandProperty displayname
是换行符分隔的字符串。
-ExpandProperty
我们也使用If ($ExistingDNs -contains $DisplayName)
,所以你最终会得到一个字符串数组。这样你的条件语句可以简化为......
Connection