命令不适用于 Powershell 中的变量

Command not working with variable in Powershell

我看过类似的问题,但没有找到适用于此处的答案。我也一直在阅读和挖掘 docs.microsoft.com。很抱歉,如果之前有人回答过这个问题,但我找不到它。

当我在 Powershell 中为它提供一个变量时,带有 CLI 的地理定位 API 不起作用。

命令:(站点,API密钥和IP为此post更改) curl.exe 'https://api.xyz.com/ipgeo?apiKey=XXXX&ip=4.3.2.1'

我手头的脚本:

[string]$lookup = $Args[0]
echo $lookup
echo "$lookup"
curl.exe 'https://api.xyz.com/ipgeo?apiKey=XXXX&ip="$lookup"'

我 运行 它来自 powershell geo 4.3.2.1

起初我没有使用 [string] 变量类型表示法,但在它不起作用之后我阅读了 docs.microsoft.com 我意识到我希望将其视为字符串,所以我添加了它。

echo 语句只是我检查变量是如何被处理的,并将从最终脚本中删除。它们都正确显示 IPv4 地址。

我已经用

尝试了最初的脚本
curl.exe 'https://api.xyz.com/ipgeo?apiKey=XXXX&ip=$lookup'

然后在变量周围添加了双引号。都不行。

如果我编辑脚本中的行,并在其中放置一个 IPv4 地址和 运行 它,它会正确输出,所以我知道它不是 API 或它的命令,这是从 powershell 传递变量的方式。

当使用变量时,我从 API 得到一个错误。

我在旧的 powershell 中尝试过,今天安装了 powershell 7.2 并得到了相同的结果。

'https://api.xyz.com/ipgeo?apiKey=XXXX&ip=$lookup'
'https://api.xyz.com/ipgeo?apiKey=XXXX&ip="$lookup"'

看起来你是按字面意思传递的。试试外面双引号,里面单引号。

"https://api.xyz.com/ipgeo?apiKey=XXXX&ip='$lookup'"

编辑:字符串和此处字符串中的变量扩展

https://devblogs.microsoft.com/powershell/variable-expansion-in-strings-and-here-strings/