使用PowerShell结合ADUser对象为CSV文件添加SID列
PowerShell解决方案:为CSV添加AD组SID列
这里给你一套完整的PowerShell脚本,能帮你给现有的CSV文件添加AD组的SID列,还考虑了基本的异常处理,避免找不到组的情况导致脚本中断:
# 导入ActiveDirectory模块(确保模块可用,导入失败直接报错提示) Import-Module ActiveDirectory -ErrorAction Stop # 替换成你实际的文件路径 $inputCsvPath = ".\original-groups.csv" $outputCsvPath = ".\groups-with-sid.csv" # 读取原始CSV数据 $csvRecords = Import-Csv -Path $inputCsvPath # 遍历每条记录,查询并添加SID字段 $updatedRecords = $csvRecords | ForEach-Object { # 根据组名查询AD组,找不到时不抛出错误 $targetGroup = Get-ADGroup -Filter "Name -eq '$($_.GroupName)'" -Properties SID -ErrorAction SilentlyContinue # 构造包含新字段的对象 [PSCustomObject]@{ UserName = $_.UserName GroupName = $_.GroupName SID = if ($targetGroup) { $targetGroup.SID.Value } else { "组未找到" } } } # 导出带SID的新CSV,去掉PowerShell默认的类型信息,用UTF8编码保证兼容性 $updatedRecords | Export-Csv -Path $outputCsvPath -NoTypeInformation -Encoding UTF8
脚本细节说明:
- 模块导入:
-ErrorAction Stop会在ActiveDirectory模块无法导入时直接报错,帮你快速排查权限或模块缺失问题 - 路径配置:把
$inputCsvPath和$outputCsvPath替换成你实际的文件路径就行 - 异常处理:如果某个组名在AD中找不到,SID列会显示
组未找到,你也可以改成空字符串或者其他自定义标记 - 导出设置:
-NoTypeInformation会去掉PowerShell自动添加的类型信息行,-Encoding UTF8确保生成的CSV在不同系统下编码兼容
示例效果验证:
原始CSV内容:
"UserName" , "GroupName" "t123","G-Q-TAT" "t124","G-Q-ABC" "t234","G-Q-ABD"
执行脚本后,输出的CSV会变成:
"UserName","GroupName","SID" "t123","G-Q-TAT","S-1-5-21-2079806555-1600217444-939750222-15100" "t124","G-Q-ABC","S-1-5-21-2079806555-1600217444-939750222-15101" "t234","G-Q-ABD","S-1-5-21-2079806555-1600217444-939750222-15102"
内容的提问来源于stack exchange,提问作者frigo
相关产品推荐
相关产品推荐

