首页 > 解决方案 > Powershell Active Directory 脚本 - 通过更改显示名称批量禁用

问题描述

我正在寻求帮助来创建/完成一个 Powershell 脚本,该脚本从 .csv 文件中获取用户的 samAccountName,在特定域中禁用该用户,例如“foo.bar”,然后在其 AD 显示名称前添加一个字符。这是一个批量禁用脚本,它必须将该单个字符添加到其显示名称的前面/开头。

到目前为止,我所拥有的是:

Import-Module ActiveDirectory 

$Server = read-host "Enter Domain to query/domain controller" 

Import-Csv "C:\Temp\samAccountNames.csv" | ForEach-Object { 

     $samAccountName = $_."samAccountName" 

     Get-ADUser -Server $Server -Identity $samAccountName | Disable-ADAccount
} 

现在,我需要做的是在显示名称前面加上“#”字符。

(例如“Doe, John”变成“#Doe, John”)

标签: powershellscriptingactive-directory

解决方案


您需要先检查是否可以找到该用户,然后更新显示名称并禁用该帐户

Import-Module ActiveDirectory 

$characterToPrepend = '#'  # the character you want to prepend the DisplayName with

$Server = Read-Host "Enter Domain to query/domain controller" 

Import-Csv "C:\Temp\samAccountNames.csv" | ForEach-Object { 
    $ADUser = Get-ADUser -Server $Server -Filter "SamAccountName -eq '$($_.samAccountName)'" -Properties DisplayName -ErrorAction SilentlyContinue
    if ($ADUser) {
        # test if the user is not already disabled
        if (!$ADUser.Enabled) {
            Write-Host "User '$($_.samAccountName)' is already disabled"
        }
        else {
            $newDisplayName = $characterToPrepend + $ADUser.DisplayName
            # set the new displayname and disable the user
            $ADUser | Set-ADUser -DisplayName $newDisplayName -Enabled $false
        }
    }
    else {
        Write-Warning "User '$($_.samAccountName)' does not exist"
    }
} 

-Filter用来获取用户而不是-Identity参数,因为后者会在找不到具有该 SamAccountName 的用户时引发异常


推荐阅读