我正在PowerShell中编写脚本来自动创建AD用户。我使用的条件之一是检查用户是否已经存在,然后检查Write-Host "User exists"
并移动到数组中的下一个元素。但是,当我运行脚本时,它给了我一个奇怪的行为。我将放置代码,然后解释当我插入断点时会发生什么。
$MACList = Get-Content $Path\MACs.txt
foreach ($MAC in $MACList){
$MABName = Get-ADUser $MAC
if ($MABName -ne $null) {
Write-Host "MAB already exists, moving to next"
} else {
# create the new user
}
当我使用断点运行脚本时,我可以看到$MACList
文件中包含MAC。当我进行下一步时,我可以看到$MAC
遍历$MACList
数组时包含每个元素。当到达$MABName
线路时,$MAC
确实包含一个MAC地址,因此应该去查找我是否有该用户并将其设置$MABName
为该用户。如果Get-User cmdlet不返回对象,则似乎保持相同的值。为什么会发生这种情况的任何想法?
Get-ADUser
对不存在的用户抛出错误,因此该变量将保留其先前的值。使用-Filter
参数可以避免此问题:
$MABName = Get-ADUser -Filter "SamAccountName -eq '$MAC'"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句