Disable/Enable 来自 CSV 的 AD 用户帐户

Disable/Enable AD user account from CSV

如何根据条目从 csv 启用或禁用 AD 用户帐户。如果两者的状态都显示为活动,则只有一个帐户被启用,而不是两个。禁用状态也一样 CSV 文件:

Samaccountname,Status
john.doe,Active
jane.doe,Disabled

我目前拥有的:

Import-CSV -Path c:\folder\adaccounts.csv

ForEach ($User in $Users)
{
    IF ($User.Status -contains "Disabled")
    {
        Get-ADUser -Identity $user.samaccountname | Disable-ADAccount
    }
    elseif ($User.Status -contains "Active")
    {
        Get-ADUser -Identity $user.samaccountname | Enable-ADAccount
    }
    

在脚本的顶部,您正在导入 CSV,但您似乎没有将它分配给 foreach 循环的变量 如果您将它分配给如下所示的 $Users 变量,则脚本的其余部分应该按预期通过您的 CSV。

$Users = Import-Csv -Path c:\folder\adaccounts.csv

-Contains 是一个运算符,用于测试是否可以在数组中找到某些东西,而不是用于测试一个字符串是否等于另一个字符串。

我会像这样修改你的代码:

Import-CSV -Path 'c:\folder\adaccounts.csv' | ForEach-Object {
    # test if a user with that SamAccountName can be found
    $user = Get-ADUser -Filter "SamAccountName -eq '$($_.Samaccountname)'" -ErrorAction SilentlyContinue
    if ($user) {
        # set Enabled if Status is not 'Disabled'
        $user | Set-ADUser -Enabled ($_.Status -ne 'Disabled')
    }
    else {
        Write-Warning "User $($_.Samaccountname) does not exist" 
    }
}