Выполнение нескольких вызовов api и хранение данных из каждого вызова в переменной в формате csv

#powershell #csv

#powershell #csv

Вопрос:

Итак, следующий код создает файл csv только с последней строкой. Мне нужно, чтобы все 5 строк (с тестовым файлом, который я использую) были заполнены и экспортированы в файл csv.

 $url = "https://example.com/api"
$data_type = "application/json"
$headers = @{
    "Content-Type" = $data_type
    "Accept" = "application/json"
}
$userId = ""
Import-CSV './userIds.csv' | ForEach-Object {
    $userId = $_.id
    $body = @{
        Identity = $userId
        Site = "site_name"
        APIKey = "secret"
    }
    $body_json = $body | Convertto-JSON
    $result = Invoke-RestMethod -Method 'Post' -Uri $url -Headers $headers -Body $body_json
}
$result | Export-Csv 'C:scriptspowershelloutput.csv' -NoType
  

Я пробовал $list = $result , но я просто получаю кучу ошибок. Есть идеи?

Ответ №1:

Похоже, я понял магию…

 $url = "https://example.com/api"
$data_type = "application/json"
$headers = @{
    "Content-Type" = $data_type
    "Accept" = "application/json"
}
$userId = ""
$list = @()
Import-CSV './userIds.csv' | ForEach-Object {
    $userId = $_.id
    $body = @{
        Identity = $userId
        Site = "site_name"
        APIKey = "secret"
    }
    $body_json = $body | Convertto-JSON
    $result = Invoke-RestMethod -Method 'Post' -Uri $url -Headers $headers -Body $body_json
    $list  = result
}
$list | Export-Csv 'C:scriptspowershelloutput.csv' -NoType
  

Для меня это не имеет смысла, потому что это массив таблиц… но если это каким-то образом сработает, объединяя таблицы в одну таблицу … тогда я счастлив.