You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell Active Directory脚本开发需求:批量禁用用户并在显示名称前添加指定字符

完善PowerShell脚本:禁用AD用户并修改显示名称

没问题,我来帮你把脚本补全!你已经完成了禁用AD用户的核心逻辑,现在只需要添加修改显示名称的部分就行。下面是更新后的完整脚本,我会顺便加上一些实用的细节优化:

Import-Module ActiveDirectory

# 获取目标域/域控制器地址
$Server = Read-Host "Enter Domain to query/domain controller"

# 读取CSV文件并批量处理用户
Import-Csv "C:\Temp\samAccountNames.csv" | ForEach-Object {
    # 去除samAccountName前后的空格,避免匹配失败
    $samAccountName = $_.samAccountName.Trim()
    
    # 获取用户对象,同时指定要读取DisplayName属性(默认不返回该属性)
    $adUser = Get-ADUser -Server $Server -Identity $samAccountName -Properties DisplayName
    
    if ($adUser) {
        # 第一步:禁用用户账号
        $adUser | Disable-ADAccount -Server $Server
        
        # 第二步:修改显示名称,在原有名称前添加#
        # 可选优化:避免重复添加#(如果脚本多次运行)
        if (-not $adUser.DisplayName.StartsWith("#")) {
            $newDisplayName = "#" + $adUser.DisplayName
            $adUser | Set-ADUser -Server $Server -DisplayName $newDisplayName
            Write-Host "✅ 已处理用户 $samAccountName:禁用账号 + 更新显示名称为 $newDisplayName"
        } else {
            Write-Host "ℹ️ 用户 $samAccountName 的显示名称已以#开头,跳过修改"
        }
    } else {
        Write-Warning "❌ 未找到用户:$samAccountName,请检查CSV中的账号是否正确"
    }
}

关键修改&优化说明:

  • 调用Get-ADUser时添加了-Properties DisplayName:AD用户的默认属性集合不包含DisplayName,必须显式指定才能读取和修改这个字段。
  • 存储用户对象到变量$adUser:避免重复查询AD,提升脚本执行效率,也让逻辑更清晰。
  • 增加账号存在性检查:防止CSV里有无效账号导致脚本直接报错中断,同时给出明确的警告提示。
  • 重复#判断逻辑:如果脚本可能被多次运行,这个判断能避免给同一个用户的显示名称重复加#(不需要的话可以直接删掉这段判断)。
  • 状态输出:通过Write-Host和Write-Warning让你能实时看到每个用户的处理结果,方便排查问题。

注意事项:

  • 确保运行脚本的账号拥有禁用AD用户和修改用户属性的权限。
  • 提前验证CSV文件,确保samAccountName列的格式正确,没有多余空格或无效值。

内容的提问来源于stack exchange,提问作者Eric Moteberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 19:24:06