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

非管理员无法用Export-Excel,求PowerShell实现AD组用户按列导出CSV

解决方案

不用第三方模块,用PowerShell原生命令就能实现需求,步骤如下:

1. 获取AD组用户列表

先把每个目标AD组的用户名称收集到哈希表中,方便后续按行匹配:

# 定义目标AD组
$ADGroups = "GroupA", "GroupB", "GroupC"

# 存储每个组的用户列表
$groupUsers = @{}
foreach ($group in $ADGroups) {
    # 获取组内用户并排序,确保输出整齐
    $groupUsers[$group] = (Get-ADGroupMember -Identity $group | Get-ADUser -Properties Name).Name | Sort-Object
}

2. 构建行式输出对象

找到用户最多的组的长度,以此为基准逐行生成对象,每行对应每个组的第N个用户(无用户则留空):

# 确定需要生成的总行数
$maxRowCount = $groupUsers.Values | Measure-Object -Property Count -Maximum | Select-Object -ExpandProperty Maximum

# 逐行构建输出对象
$outputRows = for ($i = 0; $i -lt $maxRowCount; $i++) {
    $rowProps = [ordered]@{}
    foreach ($group in $ADGroups) {
        # 按索引取用户,超出长度则设为空字符串
        $rowProps[$group] = if ($i -lt $groupUsers[$group].Count) { $groupUsers[$group][$i] } else { "" }
    }
    [PSCustomObject]$rowProps
}

3. 输出结果

  • 输出为CSV文件(原生命令,无需额外模块):
$outputRows | Export-Csv -Path ".\ADGroupUsers.csv" -NoTypeInformation -Encoding UTF8
  • 输出为对齐的表格形式(控制台查看):
$outputRows | Format-Table -AutoSize

为什么之前的方法不符合预期

你之前的代码是把整个用户数组作为自定义对象的属性值,所以输出时每个组对应一个数组集合。而上面的方法是逐行拆分数组,每行的每个属性对应单个用户,最终生成的是符合列格式的结构化对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:12:35