我正在编写一个脚本,使用Invoke-RestMethod从API中提取订单详细信息。我得到的响应是PS将json转换为PSCustomObject。我尝试做的是在.csv文件中生成行,其中嵌套数组对象在每行上拆分,非嵌套项在这些行上复制。例如,我们有订单标题和订单详细信息数据。订单明细可以包含多个产品。想象一下一个简单的SQL连接。
目前,我正在这样做,这是给我一个订单每行多个SKU在同一行。
$result = $OrdDetailResponse | Select-Object -Expand Orders |
Select-Object NumOrderID,ReferenceNum,SKU,
@{n='Order Id';e={$_.NumOrderID -join ','}},
@{n='Reference Number';e={$_.GeneralInfo.ReferenceNum -join ','}},
@{n='SKU';e={$_.Items.SKU -join ','}} -Exclude NumOrderID, ReferenceNum,SKU |
Export-Csv -Path "D:\Exports\Test\export.csv" -NOT
预期结果将是
我想我需要遍历响应中的每条记录,并扩展数组对象以将SKU拆分到每一行,但不确定如何有效地将OrderID和Reference Number复制到这些行。
任何帮助都不胜感激
1条答案
按热度按时间50pmv0ei1#
你只需要在
.Items.SKU
属性上用逗号分隔,然后为每个枚举的SKU创建一个新对象。为了用逗号分隔,我使用了.Split
Method。我还将Select-Object
语句改为[pscustomobject]
,在我看来可读性更强。字符串