具有针对Multipe AD OU的搜索库的Powershell GET-ADuser

时间:2018-09-12 19:33:35

标签: powershell

我正在尝试运行一个脚本来搜索配置为Password_not_required(544)的AD用户帐户,并将其更改为password_req(512)。

我不能完全弄清楚SearchBase上的部分,因为我只想将搜索限制为2 OU,我将它们放在变量$OU中并引用了它,但是脚本失败。任何帮助将不胜感激。

# log file
    if ($logfile -eq $null)
    {
      $logfile = "C:\test\ADUsersChangedPWNOTREQD.txt"
      New-Item $logfile -ItemType File
    }

#OU Information
    $ous = 'OU=Standard users,DC=x1,DC=contoso,DC=com','OU=Standard users,DC=x2,DC=contoso,DC=com'

# set flag PasswordNotRequired to false
    $UsersNoPwdRequired = Get-ADUser -Properties Name,distinguishedname,useraccountcontrol,objectClass -SearchBase $ous -LDAPFilter "(&(userAccountControl:1.2.840.113556.1.4.803:=32)(!(|(userAccountControl:1.2.840.113556.1.4.803:=2)(userAccountControl:1.2.840.113556.1.4.803:=65536)(IsCriticalSystemObject=TRUE))))"

    foreach($user in $UsersNoPwdRequired )
    {
      Set-ADAccountControl $user -PasswordNotRequired $false
      Add-Content $logfile "$User"
    }

2 个答案:

答案 0 :(得分:2)

只需:

$ous = 'OU=Standard users,DC=x1,DC=contoso,DC=com','OU=Standard users,DC=x2,DC=contoso,DC=com'

$ous | ForEach-Object {
    $UsersNoPwdRequired = Get-ADUser -Properties Name,distinguishedname,useraccountcontrol,objectClass -SearchBase $_ -LDAPFilter "(&(userAccountControl:1.2.840.113556.1.4.803:=32)(!(|(userAccountControl:1.2.840.113556.1.4.803:=2)(userAccountControl:1.2.840.113556.1.4.803:=65536)(IsCriticalSystemObject=TRUE))))"

    foreach($user in $UsersNoPwdRequired )
    {
        Set-ADAccountControl $user -PasswordNotRequired $false
        Add-Content $logfile "$User"
    }
}

答案 1 :(得分:0)

谢谢你们,我会做的,我希望通过在有更多时间的时候将Get-aduser移出For-each循环来提高效率。