gpt4 book ai didi

powershell - 在powershell命令中等于/s/V“/qn

转载 作者:行者123 更新时间:2023-12-02 23:37:35 26 4
gpt4 key购买 nike

我正在尝试转换为应用程序提供的静默安装程序命令
这在̣bat文件中运行得很好,但是我需要在powershell中运行它来执行自动部署任务之一

"BubblePop.exe" /s /V"/qn /lie Target=C:\Users\amit TARGETDIR=C:\Users\amit" 

我得到的错误是

You must provide a value expression following the '/' operator.
at line 1 character 17 at /s



我尝试了以下-

将其添加到变量下:
$command = "BubblePop.exe" /s /V"/qn Target=C:\Users\amit 
TARGETDIR=C:\Users\amit"
Invoke Expression $command

添加@:
@'"BubblePop.exe" /s /V"/qn Target=C:\Users\amit TARGETDIR=C:\Users\amit"'@

我认为问题出在 /s上,但无法解决。
此命令在Windows cmd提示符下有效。有没有一种解决方法?

最佳答案

/s是一个红色鲱鱼,因为它只是您的基本问题的后续错误:

您不能直接调用单引号或双引号的文件名或路径。相反,您必须使用&,即 call 运算符:

& "BubblePop.exe" /s /V"/qn /lie Target=C:\Users\amit TARGETDIR=C:\Users\amit" 

当然,对于诸如 BubblePop.exe之类的可执行文件名,它没有嵌入的空格,因此并不需要单引号或双引号,并且可以简单地将其省略,在这种情况下, &的使用是可选的:
BubblePop.exe /s /V"/qn /lie Target=C:\Users\amit TARGETDIR=C:\Users\amit" 

此外,请注意,将整个参数传递给 /V时,将不会保留 BubblePop.exe之后的值周围的双引号,因为PowerShell会将整个参数转换为 "/V/qn /lie Target=C:\Users\amit TARGETDIR=C:\Users\amit",即在整个参数周围加上双引号,以便 BubblePop.exe最终将参数视为 /V/qn /lie Target=C:\Users\amit TARGETDIR=C:\Users\amit但是,如果 BubblePop.exe确实需要这些双引号,则必须将它们转为 `"才能通过它们传递:
& "BubblePop.exe" /s /V`"/qn /lie Target=C:\Users\amit TARGETDIR=C:\Users\amit`" 

附带说明:在类似Unix的平台上的PowerShell Core中,这将不起作用,即使是转义的 "实例也将被剥离。

如果以'"开头的语句,PowerShell会以表达式模式(如编程语言)而不是参数模式(如shell)解析它-见 Get-Help about_Parsing

例如, "BubblePop.exe"本身将被简单地解释为(可扩展的)字符串文字,默认情况下仅将其输出到控制台。

解析 "BubblePop.exe" /s ...时,将 /解释为除法运算符,该运算符显然期望在其后有一个数字(除数)。意外的 token (例如 s)会导致您看到的 You must provide a value expression following the '/' operator.错误。

关于powershell - 在powershell命令中等于/s/V“/qn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51479836/

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