Powershell Power Shell非常新,短脚本中的对象引用错误
首先,我对powershell(以及一般的脚本编写)非常陌生。我试图编写一个简单的脚本,让所有用户都使用某个管理器,然后将他们设置为一个新的管理器,这让我大吃一惊。目前,我们在广告中手动执行此操作,这可能会很耗时 但是,使用下面的脚本,我不断遇到以下错误: Set ADUser:对象引用未设置为对象的实例。 第6行字符数:2 +设置ADUser-Identity$users-Manager jane.Manager 以下是我的短文:Powershell Power Shell非常新,短脚本中的对象引用错误,powershell,active-directory,Powershell,Active Directory,首先,我对powershell(以及一般的脚本编写)非常陌生。我试图编写一个简单的脚本,让所有用户都使用某个管理器,然后将他们设置为一个新的管理器,这让我大吃一惊。目前,我们在广告中手动执行此操作,这可能会很耗时 但是,使用下面的脚本,我不断遇到以下错误: Set ADUser:对象引用未设置为对象的实例。 第6行字符数:2 +设置ADUser-Identity$users-Manager jane.Manager 以下是我的短文: $users=Get-ADUser -Identity joh
$users=Get-ADUser -Identity john.manager -Properties directreports | Select directreports
ForEach ($user in $users) {
Set-ADUser -Identity $users -Manager jane.manager
}
当前脚本有两个问题
$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
}
Set-ADUser -Identity $user -Manager jane.manager -WhatIf
如果您不确定自己在做什么,请注意并将
-WhatIf
开关参数与设置调节器一起使用:
$users=Get-ADUser -Identity john.manager -Properties directreports | Select -ExpandProperty directreports
foreach($user in $users){
Set-ADUser -Identity $user -Manager jane.manager
}
Set-ADUser -Identity $user -Manager jane.manager -WhatIf
如果您省略了,Set ADUser
将告诉您它将要做什么,而不是进行任何更改,Set ADUser
将告诉您它将要做什么,如果您省略了-根据@t0mm13b,它不应该是$user
而应该是$users
。。。您正在遍历每个$users
,调用您正在处理的当前项目$user
,因此您希望确保Set-ADUser
cmdlet仅依次对每个(单个)$user
进行操作。此外,如果您是此游戏的新手(即以编程方式修改Active Directory)看在上帝的份上,使用-WhatIf
和/或-Confirm
开关打开设置调节器
,直到您确定不会发生任何疯狂的事情。你不会想让每个人的经理都是简吧?她很快就会要求加薪了。谢谢你抓住了单数/复数的问题!还有哈!!我在一个测试环境中,但是很高兴知道有一个-WhatIf命令!谢谢啊。谢谢你,杰森先生。我只是打了和你一样的答案。我担心当你把坏数据输入到Set ADUser(见原文评论)时,广告会发生什么情况@哦,当然!非常感谢你!我肯定更接近了,因为我没有得到任何错误。然而,我并没有看到管理员打开我之前设置为“John”的用户。它将继续删除!