2017-07-24 95 views
1

我对Powershell和API调用颇为陌生。Invoke-RestMethod在多行上显示结果

我想从Powershell中调用BA API返回BA处于活动状态的所有国家/地区名称。

我已经得到了返回结果的代码,但是所有结果都在单行上返回。我想在一个新行上显示每个结果。 EG每个国家/地区一行。

任何意见将不胜感激。我的代码在下面,但API密钥已被删除。

$uri = 'https://api.ba.com/rest-v1/v1/balocations' 
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" 
$headers.Add("client-key",'xxxxxxxxxx') 

function FlightLocations($uri, $headers) 
{ 
    Invoke-RestMethod -Method GET -Uri $uri -Headers $headers 
} 

$response = FlightLocations $uri $headers 
Write-Host $response.GetBA_LocationsResponse.Country.CountryName 

Powershell Results
API Data

+1

您能否包含您要返回的数据示例? –

+0

谢谢James, 我在代码下面添加了图片。对于PowerShell的结果和原始的API数据。 – tde

回答

0

我相信的样子写主机处理一个数组是这里的问题,看看这个:

输出:

$numbers = @('1','2','3','4','5') 

DataType Object[] array 

Write-Host $numbers does not work 
1 2 3 4 5 

$numbers | Write-Host works 
1 
2 
3 
4 
5 

Using foreach works to 
1 
2 
3 
4 
5 

代码:

cls 

#test data 
$numbers = @('1','2','3','4','5') 
"`$numbers = @('1','2','3','4','5')" 
#Type of data 
" 
DataType $($numbers.gettype().Name) $($numbers.gettype().BaseType)" 

#Does not work. 
" 
Write-Host `$numbers does not work" 
Write-Host $numbers 

#Works 
" 
`$numbers | Write-Host works" 
$numbers | Write-Host 


#Another aproach. 
" 
Using foreach works to" 
Foreach ($number in $numbers) 
{ 
    Write-Host $number 
} 
+0

这真的很有帮助,谢谢! – tde