[英]Running PowerShell code in powershell works, executing as .ps1 doesn't
我編寫了一些代碼,試圖從一個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
$APIkey
它被使用后 ,這肯定是錯誤的被設定。 它可能在控制台中工作,因為$APIkey
剛好已經設置。
如果願意(我認為這是個好主意),可以將以下內容添加到腳本的頂部,以捕獲此類錯誤。
Set-StrictMode -Version Latest
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.