如何排除某些用户Powershell密码重置脚本

时间:2018-05-30 05:02:56

标签: powershell active-directory passwords

嘿伙计们需要一些帮助,

我一直在讨论如何从密码重置脚本中排除某些用户。

这是剧本:

$newPassword = ConvertTo-SecureString -AsPlainText "MyP@ssw0rd" -Force




Import-Csv "C:\users\administrator\desktop\UserCreation.csv" | ForEach-Object {
 $samAccountName = $_."samAccountName"


Set-ADAccountPassword -Identity $samAccountName -NewPassword $newPassword -Reset

Set-AdUser -Identity $samAccountName -ChangePasswordAtLogon $false
Write-Host " AD Password has been reset for: "$samAccountName
}

我想从此密码重置中排除某些samAccountNames但是我无法解决这个问题。

非常感谢任何帮助。

谢谢大家

2 个答案:

答案 0 :(得分:1)

你可以使用这样的排除列表:

$exclusion_list = "testuser1","testuser2"

$totalList = ("testuser1","testuser2","testuser4")

    foreach($item in $totalList){
    if( $exclusion_list -contains $item){
    "excluding $item"
    continue
    }
    else{
    #reset the password
    $item
    }

    }

哈希表版本出于性能原因:

$exclusion_list = @{"testuser1"="exclude";"testuser2"="exclude"}

$totalList = ("testuser1","testuser2","testuser4")

foreach($item in $totalList){
if( $exclusion_list[$item]){
"excluding $item"
continue
}
else{
#your code
$item
}

}

答案 1 :(得分:1)

您始终可以在Set-AdUser comamand中设置过滤器。 像:

    Get-ADUser -Filter {(Enabled -eq $true)`
   -and (sAMAccountType -ne 805306370)`
   -and (cn -ne "Administrator")}` 
   -and (SamAccountName -like "*-ext*")`
   -SearchBase "OU=OUwithUsers,DC=MySubdomain,DC=MyDomain,DC=com"

您可以像这样过滤您的用户列表,也可以通过删除/添加用户来修改您的csv文件。您正在使用csv文件作为导入,因此您应该拥有要更改其密码的用户列表。

就个人而言,我会清除csv或创建一个带有更多过滤器的csv,这样我就可以导入它并完成我想做的事情,而不必担心如果我未经他的许可更改某人的密码。