Powershell – 如何设置多个行动get-aduser“数据集”

我试图运行一个脚本,修改多个AD用户帐户的密码,启用帐户,并在下次login时强制更改密码。

我使用这个代码,但是这不是工作:

Get-ADUSER -Filter * -SearchScope Subtree -SearchBase "OU=myou,OU=otherou,DC=mydc,DC=local" | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "NewPassord" -Force) | Enable-ADAccount | Set-ADUSER -ChangePasswordAtLogon $true

如果我运行Get-ADuser行只有一个运行正常的其他行:

Get-ADUSER -Filter * -SearchScope Subtree -SearchBase "OU=myou,OU=otherou,DC=mydc,DC=local" | Enable-ADAccount

我哪里错了? 我是PowerShell的新手,可能是我误解了一些东西。

你的pipe道不能像你期望的那样工作。

 $UserList=Get-ADUSER -Filter * -SearchScope Subtree -SearchBase "OU=myou,OU=otherou,DC=mydc,DC=local" foreach ($User in $UserList) { Set-ADAccountPassword $User -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "NewPassord" -Force Enable-ADAccount $User Set-ADUSER $user -ChangePasswordAtLogon $true } 

stream水线对于同一个对象的多个操作是不好的。 它们只在pipe道中的每个命令转发与初始对象相同的对象时才起作用。 为此,循环遍历会更有意义。

Get-ADUSER -Filter * -SearchScope Subtree -SearchBase“OU = myou,OU = otherou,DC = mydc,DC = local” %{Set-ADAccountPassword $ .Name -Reset -NewPassword(ConvertTo-SecureString -AsPlainText“NewPassord”-Force)Enable-ADAccount $ .Name Set-ADUSER $ _。Name-ChangePasswordAtLogon $ true}