如何将Active Directory安全组成员数PowerShell脚本输出导出为CSV
导出Active Directory安全组成员数量至CSV文件
要实现将组名和对应成员数导出为CSV(两列分别为组名、成员数量),你需要修改原脚本,让它保留组名与成员数的对应关系,再通过Export-Csv完成导出。以下是优化后的脚本:
基础版脚本
$Groups = Get-Content D:\group1.txt $outputResults = @() foreach ($Group in $Groups) { # 获取指定组的成员属性 $ADGroup = Get-ADGroup -Identity $Group -Properties Members # 创建包含组名和成员数的自定义对象 $groupData = [PSCustomObject]@{ "组名" = $Group "成员数量" = $ADGroup.Members.Count } $outputResults += $groupData } # 导出到CSV文件,UTF8编码避免中文乱码,-NoTypeInformation去除冗余类型信息 $outputResults | Export-Csv -Path "D:\AD_Group_Member_Count.csv" -Encoding UTF8 -NoTypeInformation
带错误处理的增强版脚本
如果要处理不存在的组或查询失败的情况,可以添加错误捕获,让结果更完整:
$Groups = Get-Content D:\group1.txt $outputResults = @() foreach ($Group in $Groups) { try { $ADGroup = Get-ADGroup -Identity $Group -Properties Members -ErrorAction Stop $groupData = [PSCustomObject]@{ "组名" = $Group "成员数量" = $ADGroup.Members.Count "查询状态" = "成功" } } catch { $groupData = [PSCustomObject]@{ "组名" = $Group "成员数量" = $null "查询状态" = "失败: $($_.Exception.Message)" } } $outputResults += $groupData } $outputResults | Export-Csv -Path "D:\AD_Group_Member_Count.csv" -Encoding UTF8 -NoTypeInformation
关键说明
- 自定义对象
[PSCustomObject]:用来绑定组名和成员数,确保两者对应关系不丢失 - 数组收集结果:先将所有组的结果存入数组,最后统一导出,避免多次写入文件提升效率
Export-Csv参数:-Path指定输出文件路径-Encoding UTF8防止中文组名出现乱码-NoTypeInformation去除CSV文件开头的类型注释行,让文件更简洁
内容的提问来源于stack exchange,提问作者Arunkumar
相关产品推荐
相关产品推荐

