gpt4 book ai didi

powershell - 如何将 PowerShell 命令中的引号抑制为可执行文件

转载 作者:行者123 更新时间:2023-12-03 22:49:13 25 4
gpt4 key购买 nike

有没有一种方法可以抑制PowerShell喜欢生成的每个命令行参数周围的引号,然后传递给外部可执行文件以获取其中包含空格的命令行参数?

情况如下:

解压许多安装程序的一种方法是使用以下格式的命令:

msiexec /a <packagename> /qn TARGETDIR="<path to folder with spaces>"

尝试从PowerShell执行此操作非常困难。 PowerShell喜欢用双引号将参数括起来。以下几行:
msiexec /a somepackage.msi /qn 'TARGETDIR="c:\some path"'

msiexec /a somepackage.msi /qn $('TARGETDIR="c:\some path"')

$td = '"c:\some path"'

msiexec /a somepackage.msi /qn TARGETDIR=$td

所有结果都显示在以下命令行中(由Win32 GetCommandLine()API报告):
"msiexec" /a somepackage.msi /qn "TARGETDIR="c:\some path""

此命令行:
msiexec /a somepackage.msi TARGETDIR="c:\some path" /qn

结果是
"msiexec" /a fooinstaller.msi "TARGETDIR=c:\some path" /qn

PowerShell似乎喜欢在将表达式的结果传递给外部可执行文件时将要用引号表示一个参数的表达式的结果括起来。这对于大多数可执行文件都可以正常工作。但是,MsiExec对所需的报价规则非常具体,并且不接受PowerShell为路径生成的任何命令行中都包含空格的命令行。

有没有办法抑制这种行为?

最佳答案

像这样转义内部引号:

msiexec /a somepackage.msi TARGETDIR=`"c:\some path`" /qn

关于powershell - 如何将 PowerShell 命令中的引号抑制为可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624459/

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