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

如何通过PowerShell从多台工作站导入导出AD组并处理CSV文件?

批量导入工作站列表并导出其AD组成员身份到CSV

操作步骤与脚本实现

1. 准备导入的CSV文件

确保你的导入CSV包含ComputerName列,每一行对应一台工作站的名称,示例格式如下:

ComputerName
w61707285
w61708901
wkstn-003

2. 完整PowerShell脚本

以下脚本会读取导入CSV,遍历每台工作站,获取其所属的所有AD组,最终导出包含ComputerName和ADGroupName两列的结果CSV:

# 导入工作站列表CSV
$computers = Import-Csv -Path "C:\path\to\your\input_computers.csv"

# 初始化结果数组
$results = @()

foreach ($computer in $computers) {
    $computerName = $computer.ComputerName
    try {
        # 获取工作站的AD组关联信息,仅加载MemberOf属性提升效率(替代-Properties *)
        $adGroups = Get-ADComputer -Identity $computerName -Properties MemberOf | Select-Object -ExpandProperty MemberOf
        
        # 将每个组与工作站名称关联,添加到结果数组
        foreach ($group in $adGroups) {
            # 将组的DN转换为可读的组名
            $groupName = (Get-ADGroup -Identity $group).Name
            $results += [PSCustomObject]@{
                ComputerName = $computerName
                ADGroupName  = $groupName
            }
        }
    }
    catch {
        # 捕获并记录找不到工作站的错误
        $results += [PSCustomObject]@{
            ComputerName = $computerName
            ADGroupName  = "ERROR: 工作站未找到或无权限访问"
        }
        Write-Warning "处理工作站 $computerName 时出错: $_"
    }
}

# 导出结果到CSV文件
$results | Export-Csv -Path "C:\path\to\your\output_ad_groups.csv" -NoTypeInformation -Encoding UTF8

关键说明

  • 避免使用-Properties *:仅指定MemberOf属性可以大幅提升脚本执行效率,减少不必要的数据加载。
  • 组名转换:脚本将AD组的Distinguished Name(DN)转换为可读的组名,方便后续查看。
  • 错误处理:添加了异常捕获,记录无法访问的工作站,避免脚本中断。

运行要求

  • 已安装Active Directory模块(需在域控制器或安装RSAT工具的机器上运行)。
  • 运行脚本的账号需具备读取AD计算机和组信息的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:01:19