繁体   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