gpt4 book ai didi

powershell - 带双引号的参数没有通过 ArgumentList 正确传递给 Scriptblock

转载 作者:行者123 更新时间:2023-12-04 16:31:45 26 4
gpt4 key购买 nike

我正在编写通用的 powershell 脚本来在远程机器上执行部署。我遇到了一个不能超限的问题,这个问题是关于在 Scriptblock 中由 ArgumentList 传递的带双引号的参数

我有这样的事情:

$remoteAddress = "some-pc"
$deploymentCommand = "D:\some path\Command.exe"
$deploymentPackages = @(`"“package - one - external"`", `"“package - two - external"`", `"“package - three - internal"`")

foreach ($deploymentPackage in $deploymentPackages)
{
invoke-command -ComputerName $remoteAddress -ScriptBlock { param ($deployCmd, $deployPackage) & $deployCmd -package:$deployPackage -action:doit } -ArgumentList $deploymentCommand,$deploymentPackage
}

我在 $deploymentPackages 中添加了双引号。而且我仍然像这样远程执行我的命令(这当然失败了):
D:\some path\Command.exe -package:package - one - external -action:doit
D:\some path\Command.exe -package:package - two - external -action:doit
D:\some path\Command.exe -package:package - three - external -action:doit

而正确的执行路径应该是:
D:\some path\Command.exe -package:"package - three - external" -action:doit

包周围没有引号 - 一个 - 外部会搞砸一切

如何解决这个问题,因为我已经测试了许多解决方案,但没有一个有效。

提前感谢您的帮助!

最佳答案

您可以通过使用单引号包裹字符串来解决此问题。使用单引号,引号之间的内容将保持不变(变量不会扩展并且会保留引号之类的符号)。例如。

PS > '"this is a test"'
"this is a test"

因此,要修复您的脚本,请尝试替换您的 deploymentpackages用这个数组:
$deploymentPackages = @('"package - one - external"', '"package - two - external"', '"package - three - internal"')

关于powershell - 带双引号的参数没有通过 ArgumentList 正确传递给 Scriptblock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14989073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com