如何将PowerShell中API返回的数组列表导出为带表头的CSV?
解决PowerShell API响应转带表头CSV的问题
你当前的问题在于把每个字段的所有值单独提取为数组,导致无法关联每个用户的三个属性。正确的做法是逐个遍历API返回的每个worker条目,为每个条目生成包含对应字段的对象,再统一导出为CSV。
修改后的脚本如下:
$headers.Add("Authorization", "Bearer $access_token") # 获取API响应 $response = Invoke-RestMethod -Uri $URL -Method GET -Headers $headers -DisableKeepAlive -Certificate $certx # 遍历每个worker,构建自定义对象 $workerData = foreach ($worker in $response.workers) { [PSCustomObject]@{ GivenName = $worker.person.legalName.givenName FamilyName = $worker.person.legalName.familyName1 # 处理邮箱:如果一个worker有多个邮箱,这里取第一个;如需全部可改用 -join ';' Email = $worker.businessCommunication.emails[0].emailUri } } # 导出为CSV文件,-NoTypeInformation去掉默认的类型信息行 $workerData | Export-Csv -Path "C:\Users\workers.csv" -NoTypeInformation -Encoding UTF8
关键说明:
- 遍历
$response.workers逐个处理每个用户,确保三个字段属于同一个用户 - 用
[PSCustomObject]构建包含指定表头的对象,PowerShell的Export-Csv会自动将对象属性作为CSV列标题 - 邮箱处理部分:如果API返回的每个worker可能有多个邮箱,可根据需求调整,比如用
$worker.businessCommunication.emails.emailUri -join ';'将多个邮箱用分号分隔
这样导出的CSV会直接带有GivenName、FamilyName、Email表头,每行对应一个worker的完整数据。
内容的提问来源于stack exchange,提问作者Raif
相关产品推荐
相关产品推荐

