我编写了一些代码,试图从一个Rest API中获取值并将其发布到另一个。 我将代码保存在.ps1文件中。如果我编辑并运行它(或者只是将其复制并粘贴到一个空的PowerShell终端中),它就能达到我的预期。但是,当我尝试直接运行相同的.ps1文件时,我在第二个Invoke-RestMethod上出现错误。
不明白为什么我会得到不同的结果,而错误信息却没有给我很多线索。
我做错了什么?
我使用的代码是(使用修改的API密钥):
$encoded = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($APIkey+":"))
$headers = @{"Content-Type" = "application/json"; "AUTHORIZATION" = "Basic $encoded"}
$APIkey = "123456789"
$metricId = "123"
$r = Invoke-RestMethod -Uri https://coinbase.com/api/v1/currencies/exchange_rates
$metric = [PSCustomObject]@{
value = [Math]::Round($r.btc_to_eur, 2)
}
$baseuri = "https://api.numerousapp.com/v1/metrics/$metricId/events"
$data = ConvertTo-Json $metric
Invoke-RestMethod -Uri $baseuri -Body $data -Headers $headers -Method Post
运行.ps1文件时收到的错误消息是:
Invoke-RestMethod : :
At C:\NumerousBitcoinEur.ps1:13 char:1
+ Invoke-RestMethod -Uri $baseuri -Body $data -Headers $headers -Method Post
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
我使用的是PowerShell 4.0
答案 0 :(得分:3)
$APIkey
在使用之后被设置,这一定是错误的。它可能在控制台中工作,因为$APIkey
恰好已经设置好了。
如果您愿意(我认为这是一个好主意),您可以在脚本的顶部添加以下内容以捕获此类错误。
Set-StrictMode -Version Latest