PowerShell合并AzureAD组成员CSV时为每行添加来源文件名
解决AzureAD组成员CSV合并时添加源文件名的问题
看起来你已经在做多个AzureAD组成员CSV的合并工作了,要给每行加上源文件名的话,用Import-Csv来处理结构化数据会比直接读文本行更可靠,避免表头处理的麻烦。这里给你调整后的完整脚本,直接就能用:
# 设置合并后的输出文件路径 $outputFilePath = "C:\Users\user\Documents\Azure\Intune\management\Combined_Group_Members.csv" # 遍历目标目录下的所有CSV文件,逐个处理 Get-ChildItem "C:\Users\user\Documents\Azure\Intune\management\*.csv" | ForEach-Object { # 导入当前CSV的内容为PowerShell对象 $groupMembers = Import-Csv -Path $_.FullName # 给每一行数据添加SourceFileName属性,值为当前文件的名称(如果要完整路径就用$_.FullName) $groupMembers | Add-Member -MemberType NoteProperty -Name "SourceFileName" -Value $_.Name -Force # 输出处理好的数据,供后续合并导出 $groupMembers } | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding UTF8
脚本说明:
Get-ChildItem:扫描指定目录下所有.csv文件,确保不会漏掉任何目标文件Import-Csv:把CSV转换成可操作的对象,不用手动处理文本拆分和表头重复的问题Add-Member:给每条组成员记录新增一个SourceFileName字段,直接关联它来自哪个原始文件Export-Csv:把所有处理后的记录合并导出,-NoTypeInformation避免生成PowerShell专属的类型注释,-Encoding UTF8保证导出文件在不同系统下的兼容性
如果你的原始CSV都是AzureAD导出的组成员列表,表头应该是统一的(比如DisplayName、UserPrincipalName、ObjectId这些),这个脚本可以直接无缝运行。要是遇到表头不一致的情况,你可以先给Import-Csv加上-Header参数指定统一表头,再进行后续处理。
内容的提问来源于stack exchange,提问作者adam humphrey
相关产品推荐
相关产品推荐

