命令不适用于Powershell中的变量[重复]
Posted
技术标签:
【中文标题】命令不适用于Powershell中的变量[重复]【英文标题】:Command not working with variable in Powershell [duplicate] 【发布时间】:2022-01-23 22:02:46 【问题描述】:我查看了类似的问题,但没有找到适用于此的答案。我也一直在 docs.microsoft.com 上阅读和挖掘。抱歉,如果之前回答过这个问题并且我找不到它。
当我在 Powershell 中为其提供变量时,带有 CLI 的地理定位 API 无法正常工作。
命令:(本帖更改了站点、API 密钥和 IP)
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"'
我用geo 4.3.2.1
从powershell运行它
起初我没有使用 [string] 变量类型表示法,但在它不起作用之后,我在 docs.microsoft.com 上做了一些阅读 我意识到我希望将其视为字符串,所以我添加了它。
回显语句只是我检查变量的处理方式,并将从最终脚本中删除。它们都正确显示了 IPv4 地址。
我已经尝试过最初使用的脚本
curl.exe 'https://api.xyz.com/ipgeo?apiKey=XXXX&ip=$lookup'
然后在变量周围添加双引号。都不行。
如果我在脚本中编辑该行,并在其中放置一个 IPv4 地址并运行它,它会正确输出,所以我知道它不是 API 或它的命令,而是变量的传递方式电源外壳。
使用该变量时,我从 API 收到错误消息。
我在旧的 powershell 中尝试过这个,今天安装了 powershell 7.2 并得到了相同的结果。
【问题讨论】:
简而言之:只有"..."
字符串(双引号,称为可扩展字符串)在PowerShell中执行字符串插值(变量值的扩展),而不是'...'
字符串(单引号,称为 逐字字符串):请参阅this answer 了解 PowerShell 的可扩展字符串 和this answer 了解 PowerShell 的字符串文字的概述.
【参考方案1】:
'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/
【讨论】:
你可能根本不需要内引号。 我是盲人,好抓! 就是这样!我知道这一定是我的一些语法错误。我在 url 周围使用了双引号,没有内引号或单引号,并且脚本运行完美。再次感谢! 也感谢您为我学习提供的额外阅读/学习以上是关于命令不适用于Powershell中的变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Active Directory 命令在 PowerShell 下工作,但不适用于命令提示符