PowerShell管道失败-ActiveDirectory cmdlet

PowerShell管道失败-ActiveDirectory cmdlet,powershell,active-directory,cmdlets,piping,Powershell,Active Directory,Cmdlets,Piping,我在测试设置中编写的脚本的一部分涉及根据department属性禁用用户帐户。 我可以通过以下方法实现这一点: Get-AdUser -Filter "Department -eq 'SomeDept'" | foreach {Set-ADUser $_ -Enabled 0} 但是,由于某些原因,这不起作用: Get-AdUser -Filter "Department -eq 'SomeDept'" | Set-Aduser $_ -Enabled 0 返回的错误为“无法验证参数“Ide

我在测试设置中编写的脚本的一部分涉及根据department属性禁用用户帐户。 我可以通过以下方法实现这一点:

Get-AdUser -Filter "Department -eq 'SomeDept'" | foreach {Set-ADUser $_ -Enabled 0}
但是,由于某些原因,这不起作用:

Get-AdUser -Filter "Department -eq 'SomeDept'" | Set-Aduser $_ -Enabled 0
返回的错误为“无法验证参数“Identity”上的参数。该参数为null…”,表示我使用$时出现问题


为什么foreach实现可以工作,而更简单的版本由于对象通过管道传输而失败?

从第二个示例中删除
$\uuu
,管道会自动将从
Get ADUser
返回的
ADUser
对象绑定到
-Identity
@mathias-r-jessen-这非常有效。如果我没有对
foreach
示例使用
$\ucode>,系统会提示我输入
-Identity
foreach
是否有效地“妨碍”了绑定?是和否,通过管道进入的对象被绑定到
foreach对象的
-InputObject
,然后每个对象都被自动分配到scriptblock内的
$\ucode>,因此如果没有使用
$\ucode>,就没有什么可分配的了,因此,提示
-Identity
正确<如果您使用的
cmdlet
不支持管道处理,或者您需要在绑定之前操作某些属性或值,并且对更改实际传入对象不感兴趣,则code>ForEach对象
最为方便。在您的情况下,从第二个示例中删除
$\ucode>是非常不必要的,管道会自动将从
Get-ADUser
返回的
ADUser
对象绑定到
-Identity
@mathias-r-jessen-这非常有效。如果我没有对
foreach
示例使用
$\ucode>,系统会提示我输入
-Identity
foreach
是否有效地“妨碍”了绑定?是和否,通过管道进入的对象被绑定到
foreach对象的
-InputObject
,然后每个对象都被自动分配到scriptblock内的
$\ucode>,因此如果没有使用
$\ucode>,就没有什么可分配的了,因此,提示
-Identity
正确<如果您使用的
cmdlet
不支持管道处理,或者您需要在绑定之前操作某些属性或值,并且对更改实际传入对象不感兴趣,则code>ForEach对象
最为方便。对你来说,这是非常不必要的