【发布时间】:2020-12-03 07:00:26
【问题描述】:
我想将我的powershell脚本导出到csv,只有当文件被导出时,我才能在我的csv文件中获取标题,但数据包含systemobject。
#------- Opvragen token tiptrack -------
#Dit is de URL waar de token voor tiptrack wordt opgevraagd.
$Url_token="https://tiptracknext-staging-login.indicia.nl/oauth2/aus342go9hNphcHXM0i7/v1/token"
#Dit is de body die mee wordt gestuurd in de request, deze informatie staat gelijk aan de data in de post request vanuit de handleiding.
$Data_token = @{
grant_type="client_credentials"
client_id="123457"
client_secret="123456"
scope="eapi"
}
$token_tiptrack=Invoke-RestMethod -Method Post -Uri $Url_token -ContentType "application/x-www-form-urlencoded" -Body $Data_token
#------- Opvragen Employerbudgetsid -------
#Dti is de URL waarna de GET request wordt gestuurd om het employerid te kunnen.
$Url_budgetid='https://staging.tiptrack.nl/Tiptrack.Employer.Api/odata/EmployeeBudgets?$expand=Employee($expand=SecureEmployee)&$top=5'
#Dit is header die mee wordt gestuurd in de request. Deze data in deze header staat gelijk aan de data in de API handleiding.
$header_process = @{
Authorization='Bearer '+$token_tiptrack.access_token
"accept"="application/json"
}
#Vanuit het uploaden van het bestand krijgen we een reactie van de server, in deze reactie staat het upload id, deze id hebben we nodig om het bestand te kunnen verwerken.
$data = Invoke-RestMethod -Uri $Url_budgetid -Method Get -Headers $header_process
$exportdata = $data |
ForEach-Object { return [PSCustomObject]@{
EmployeeNumber = $_.Value.Employee.SecureEmployee.EmployeeNumber;
ComputedCurrentBalanceAmount =($_.Value.ComputedCurrentBalanceAmount) ;
} }
$exportdata | Select EmployeeNumber,ComputedCurrentBalanceAmount | Export-Csv C:\afas\test3.csv -NoTypeInformation
这是我想要的输出:
# EmployeeNumber,ComputedCurrentBalanceAmount
# EMP1,100,00
# EMP2,250,49
# EMP3,450,00
【问题讨论】:
-
尽量省略
ForEach-Object或return中的return整个exportdata。接下来试试这个并检查$ExportCsv-Object:$ExportCsv = $exportdata | Select EmployeeNumber,ComputedCurrentBalanceAmount$ExportCsv.getType()说什么? -
是get返回的json吗?
-
这是输出:EmployeeNumber ComputedCurrentBalanceAmount -------------- --------- ------- {A20200626-00, A20200626-01, 100003, 100015...} {$null, $null, 1695,4000, 323,0400...}
-
@T-Me,这是我做 $ExportCsv.getType() IsPublic IsSerial Name BaseType 时的反应 -------- -------- ---- -------- True False PSCustomObject System.Object
-
您的数据中有多个不同深度的数组。是否存在另一个更深层次的数据集共享相同的数组?也许你需要
$data | foreach-object { $_.Value | Foreach-Object { $_.Employee.SecureEmployee.EmployeeNumber } }。看不到GET返回的数据,很难猜。
标签: json powershell export-to-csv export-csv foreach-object