首先,我对Power Shell(以及一般的脚本)非常陌生。我试着编写一个简单的脚本,让所有用户都使用某个管理员,然后将它们设置为新的管理员,从而让我的脚湿透。目前,我们在AD中手动执行此操作,这可能非常耗时。
但是,使用下面的脚本我不断收到以下错误:
Set-ADUser:未将对象引用设置为对象的实例。 在行:6 char:2 + Set-ADUser -Identity $ users -Manager jane.manager
这是我的简短剧本:
$users=Get-ADUser -Identity john.manager -Properties directreports | Select directreports
ForEach ($user in $users) {
Set-ADUser -Identity $users -Manager jane.manager
}
答案 0 :(得分:2)
您当前的脚本存在两个问题。
$users=Get-ADUser -Identity john.manager -Properties directreports | Select directreports
# ^
# |
# this creates 1 object with a
# "directreports" property
Set-ADUser
无法识别出这样的对象。由于您希望引用directReports
个对象,请将其展开为包含ExpandProperty
参数的值列表:
$users=Get-ADUser -Identity john.manager -Properties directreports | Select -ExpandProperty directreports
第二个问题似乎是一个错字,在你引用你正在循环的$users
集合的循环中,而不是当前$user
:
$users=Get-ADUser -Identity john.manager -Properties directreports | Select -ExpandProperty directreports
foreach($user in $users){
Set-ADUser -Identity $user -Manager jane.manager
}
如果您不确定自己在做什么,请注意Charlie Joynt's advice并将-WhatIf
开关参数与Set-ADUser
一起使用:
Set-ADUser -Identity $user -Manager jane.manager -WhatIf
如果省略Set-ADUser
-WhatIf
将告诉您要做什么,而不是进行任何更改