我正在尝试使用此脚本更新特定city
中用户的ou
属性,但它不起作用。该脚本完成且没有错误。当我检查用户时,city
仍为空白。
$users = Get-ADUser -Filter * -SearchBase 'OU=...' -Properties SamAccountName
foreach ($user in $users){
Set-ADUser -identity $user.SamAccountName -City 'Alice'
}
答案 0 :(得分:1)
听起来你的Get-ADUser
什么都没有返回,所以永远不会输入foreach
循环。
Get-ADUser
参数的 -Filter
如果未找到匹配项,则失败,它会静静地返回空集合。
空集合上的foreach
循环或$null
根本就没有输入,所以总体来说你会得到一个安静的无操作。
请注意,-Properties SamAccountName
调用中您永远不需要Get-ADUser
,因为-Properties
仅需要为每个结果对象返回其他属性,而SamAccountName
是默认属性集的一部分。
因此:
Get-ADUser
来电,以下代码段演示了后者,它还通过将Get-ADUser
的输出直接传递给Set-ADUser
来简化您的命令:
# Get the users of interest and pass them to the Set-ADUser call to update
# the City property.
# Note the use of -OutputVariable users, which saves the output from
# Get-ADUser in variable $users
Get-ADUser -OutputVariable users -Filter * -SearchBase 'OU=...' | Set-ADUser -City 'Alice'
# Report terminating error if no users were found.
# Note: -not $users returns $true if $users is an empty collection
# (or a similarly "falsy" value such as $null, 0, or '').
if (-not $users) { Throw "Get-ADUser unexpectedly returned nothing." }