如何使用来自 CSV 的多个变量为多个 API 调用设计一个 "Invoke-WebRequest"? (电源外壳)
How to design an "Invoke-WebRequest" for multiple API calls with more than one variable from CSV? (Powershell)
我正在尝试调用 Dark Sky API 获取数百行 CSV 文件中每个位置的天气预报数据,并将它们写入文本文件。这是 CSV 前 5 行的示例...
ip city region_code zip latitude longitude
75.161.17.209 Albuquerque NM 87114 35.1868 -106.6652
68.55.28.227 Plymouth MI 48170 42.3688 -83.4799
72.95.198.227 Homestead PA 15120 40.3926 -79.9052
68.180.94.219 Normal IL 61761 40.5124 -88.9883
75.132.165.245 Belleville IL 62226 38.5352 -90.0006
uri 的格式如下...
https://api.darksky.net/forecast/[APIKey]/$latitude ,$longitude ,$ForcastTime ?exclude=currently,minutely,hourly,flags&units=us
此 uri 中有 3 个变量。 $latitude、$longitude 和 $ForecastTime。 $ForecastTime 很简单,因为它对所有请求都是相同的,所以我已经将其定义为...
$ForecastTime = Get-Date -Date $(Get-Date).AddDays(1) -Format yyyy-MM-ddTHH:mm:ss
...为了给我明天的预报信息。这是 Dark Sky 要求的格式,并且工作得很好。
我在将 $latitude 和 $longitude 定义为变量并格式化 Invoke-WebRequest 时遇到问题,因此我无法提取整个位置字符串的天气数据。
如有任何帮助,我们将不胜感激。
这是一些使用 Invoke-RestMethod
的示例代码,但您也可以使用 Invoke-WebRequest
。我喜欢使用 Invoke-RestMethod
与 API 进行交互。尝试告诉我它是否有效。
$ForecastTime = Get-Date -Date $(Get-Date).AddDays(1) -Format yyyy-MM-ddTHH:mm:ss;
Import-CSV './input.csv' | ForEach-Object {
$result = Invoke-RestMethod -Uri "https://api.darksky.net/forecast/$apiKey/$_.latitude,$_.longitude,$ForcastTime?exclude=currently,minutely,hourly,flags&units=us"
}
PS:如果 CSV 列名中有空格,那么您可以将该列读作 $_.'Region Code'
我正在尝试调用 Dark Sky API 获取数百行 CSV 文件中每个位置的天气预报数据,并将它们写入文本文件。这是 CSV 前 5 行的示例...
ip city region_code zip latitude longitude
75.161.17.209 Albuquerque NM 87114 35.1868 -106.6652
68.55.28.227 Plymouth MI 48170 42.3688 -83.4799
72.95.198.227 Homestead PA 15120 40.3926 -79.9052
68.180.94.219 Normal IL 61761 40.5124 -88.9883
75.132.165.245 Belleville IL 62226 38.5352 -90.0006
uri 的格式如下...
https://api.darksky.net/forecast/[APIKey]/$latitude ,$longitude ,$ForcastTime ?exclude=currently,minutely,hourly,flags&units=us
此 uri 中有 3 个变量。 $latitude、$longitude 和 $ForecastTime。 $ForecastTime 很简单,因为它对所有请求都是相同的,所以我已经将其定义为...
$ForecastTime = Get-Date -Date $(Get-Date).AddDays(1) -Format yyyy-MM-ddTHH:mm:ss
...为了给我明天的预报信息。这是 Dark Sky 要求的格式,并且工作得很好。
我在将 $latitude 和 $longitude 定义为变量并格式化 Invoke-WebRequest 时遇到问题,因此我无法提取整个位置字符串的天气数据。
如有任何帮助,我们将不胜感激。
这是一些使用 Invoke-RestMethod
的示例代码,但您也可以使用 Invoke-WebRequest
。我喜欢使用 Invoke-RestMethod
与 API 进行交互。尝试告诉我它是否有效。
$ForecastTime = Get-Date -Date $(Get-Date).AddDays(1) -Format yyyy-MM-ddTHH:mm:ss;
Import-CSV './input.csv' | ForEach-Object {
$result = Invoke-RestMethod -Uri "https://api.darksky.net/forecast/$apiKey/$_.latitude,$_.longitude,$ForcastTime?exclude=currently,minutely,hourly,flags&units=us"
}
PS:如果 CSV 列名中有空格,那么您可以将该列读作 $_.'Region Code'