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

使用输入列表在PowerShell中检索并导出AD安全组成员

嘿,恭喜你已经写出第一个实用的PowerShell脚本啦!要实现批量处理AD组、不用手动重复输入组名,其实很简单,核心思路就是先准备好组列表文件,再让脚本循环读取并处理每个组。下面给你两种最常用的实现方式:

方法1:用文本文件存组列表(每行一个组名)

这是最直观的方式,适合组列表不多的情况:

  1. 先创建一个文本文件,比如C:\ADGroups.txt,把你要处理的安全组名称逐行写进去,比如:
Sales-Team
HR-Admins
IT-Support
Finance-Group
  1. 然后用下面的脚本批量导出:
# 读取文本文件里的所有组名
$groupList = Get-Content -Path "C:\ADGroups.txt"

# 循环处理每个组
foreach ($group in $groupList) {
    # 跳过文件里的空行,避免无意义的错误
    if ([string]::IsNullOrWhiteSpace($group)) { continue }

    try {
        # 获取组成员,同时给每条记录加上组名列(方便后续区分)
        Get-ADGroupMember -Identity $group -ErrorAction Stop |
            Select-Object samaccountname, @{Name='GroupName'; Expression={$group}} |
            # 每个组导出到单独的CSV文件,文件名包含组名,防止覆盖
            Export-Csv -Path "C:\ADGroup_$($group -replace '[\\/:*?"<>|]', '_').csv" -NoTypeInformation
        
        Write-Host "✅ 成功导出组 [$group] 的成员" -ForegroundColor Green
    }
    catch {
        # 捕获并显示错误,比如组不存在、权限不足等情况
        Write-Host "❌ 处理组 [$group] 失败:$($_.Exception.Message)" -ForegroundColor Red
    }
}

小贴士:脚本里用-replace替换了组名里的非法字符,避免生成无效的文件名。

方法2:用CSV文件存组列表(适合带额外信息的场景)

如果你的组列表是从其他系统导出的(比如带部门、备注等信息),可以用CSV文件:

  1. 创建CSV文件C:\ADGroups.csv,格式如下(第一行是表头):
GroupName,Department
Sales-Team,Sales
HR-Admins,Human Resources
IT-Support,Technology
  1. 对应的批量处理脚本:
# 读取CSV文件
$groupList = Import-Csv -Path "C:\ADGroups.csv"

foreach ($row in $groupList) {
    $group = $row.GroupName
    if ([string]::IsNullOrWhiteSpace($group)) { continue }

    try {
        Get-ADGroupMember -Identity $group -ErrorAction Stop |
            # 可以顺便把CSV里的其他信息(比如部门)也加上
            Select-Object samaccountname, @{Name='GroupName'; Expression={$group}}, @{Name='Department'; Expression={$row.Department}} |
            # 把所有组成员合并到一个CSV文件里
            Export-Csv -Path "C:\AllADGroupMembers.csv" -NoTypeInformation -Append
        
        Write-Host "✅ 成功导出组 [$group] 的成员" -ForegroundColor Green
    }
    catch {
        Write-Host "❌ 处理组 [$group] 失败:$($_.Exception.Message)" -ForegroundColor Red
    }
}

如果只想导出用户成员(排除计算机、联系人等对象),可以在Get-ADGroupMember后面加上| Where-Object {$_.objectClass -eq 'user'}。

最后提醒一下:运行脚本的账号需要有读取Active Directory组的权限哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:33:53