我试图运行一个脚本,修改多个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}