簡體   English   中英

在Powershell中運行PowerShell代碼可以正常工作,而不能以.ps1執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM