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

请求修改PowerShell脚本:批量获取AD计算机本地用户组及启用状态

修改后的PowerShell脚本
# 导入ActiveDirectory模块(需提前安装RSAT工具)
Import-Module ActiveDirectory

# 获取AD中的计算机列表,可根据需求添加筛选条件(如指定OU范围)
$computers = Get-ADComputer -Filter * -Properties Name

# 定义输出CSV路径
$outputPath = "\..\KontaLokalne.csv"

# 遍历每台计算机
foreach ($WKS in $computers) {
    $computerName = $WKS.Name
    Write-Host "正在处理计算机:$computerName"

    try {
        # 连接目标计算机的WinNT命名空间
        $adsi = [ADSI]"WinNT://$computerName"
        $adsi.Children | Where-Object { $_.SchemaClassName -eq 'user' } | ForEach-Object {
            # 获取用户所属组并拼接为字符串
            $groups = $_.Groups() | ForEach-Object { 
                $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null) 
            } -join ','

            # 获取账户启用状态:AccountDisabled为$true表示禁用,取反得到启用状态
            $isEnabled = -not $_.AccountDisabled

            # 构造输出对象
            [PSCustomObject]@{
                计算机名 = $computerName
                账户名   = $_.Name
                所属组   = $groups
                启用状态 = if ($isEnabled) { "已启用" } else { "已禁用" }
            } | Export-Csv -Path $outputPath -NoClobber -Append -Encoding UTF8 -Delimiter ";" -NoTypeInformation
        }
    }
    catch {
        Write-Warning "无法访问计算机 $computerName : $_"
    }
}

关键修改说明

  • 批量获取AD计算机:通过Get-ADComputer拉取域内计算机列表,可根据实际需求添加筛选条件(如指定OU、操作系统版本)
  • 新增启用状态字段:利用ADSI用户对象的AccountDisabled属性,转换为易读的中文启用/禁用描述
  • 调整输出格式:新增计算机名字段,输出列匹配需求的计算机名;账户名;所属组,同时补充启用状态信息
  • 异常处理:添加try/catch捕获计算机不可达的情况,避免脚本中断并输出警告
  • 代码优化:提前完成组拼接操作,让逻辑更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:05:16