Powershell使用单引号调用cmd

Powershell使用单引号调用cmd,powershell,cmd,Powershell,Cmd,我想和你做同样的事,但现在我对这句话有问题:“这是出乎意料的。” 我试图用\逃跑,但情况更糟 function concat-filenames { cmd.exe --% /c (echo file '$($args[0])' & echo file '$($args[0])' )>list.txt } -%,不能与PowerShell变量和表达式组合,因为它将命令行的其余部分传递给目标可执行文件-在本例中为cmd.exe-原样,唯一的例外是cmd.exe样式的环境变量引

我想和你做同样的事,但现在我对这句话有问题:“这是出乎意料的。”

我试图用\逃跑,但情况更糟

function concat-filenames {
   cmd.exe --% /c (echo file '$($args[0])' & echo file '$($args[0])' )>list.txt
}
-%,不能与PowerShell变量和表达式组合,因为它将命令行的其余部分传递给目标可执行文件-在本例中为cmd.exe-原样,唯一的例外是cmd.exe样式的环境变量引用的扩展插值,例如%USERNAME%

通常,-%有很多限制-请参阅

像下面这样的东西应该可以工作;请注意,&必须加引号才能传递到cmd.exe,而>,由于不加引号,由PowerShell解释

function concat-filenames {
  cmd.exe /c echo file $args[0] '&' echo file $args[0] > list.txt
}
请注意,在cmd.exe中,echo命令之后、后续运算符(如&或>)之前的尾随空格将成为输出的一部分

如果要将单引号作为值的一部分传递,而不是将其语法用作PowerShell字符串文字,请使用…:

请注意,在这两种情况下,PowerShell都会在后台按需执行重新引用:如果扩展的插值参数值包含空格,则将其包装为双引号….

-%,则不能与PowerShell变量和表达式组合,因为它将命令行的其余部分按原样传递给目标可执行文件cmd.exe,唯一的例外是cmd.exe样式的环境变量引用的扩展插值,例如%USERNAME%

通常,-%有很多限制-请参阅

像下面这样的东西应该可以工作;请注意,&必须加引号才能传递到cmd.exe,而>,由于不加引号,由PowerShell解释

function concat-filenames {
  cmd.exe /c echo file $args[0] '&' echo file $args[0] > list.txt
}
请注意,在cmd.exe中,echo命令之后、后续运算符(如&或>)之前的尾随空格将成为输出的一部分

如果要将单引号作为值的一部分传递,而不是将其语法用作PowerShell字符串文字,请使用…:


请注意,在这两种情况下,PowerShell都会在后台按需执行重新引用:如果扩展的插值参数值包含空格,则它会用双引号括起来……

请尝试加载/使用原始内容

默认情况下,Get Content以X类型的数组(通常是字符串数组)的形式解析或尝试转换输入

经过短暂的测试。。PS 5.1使用-Encoding Byte作为字节,PS 6+使用-AsByteStream作为字节,PowerShell引擎流解析输入到管道,而不是作为一个整体。PS6+参数名称表明已经存在

因此,请尝试为此使用-Raw参数。由于您不想以任何方式循环输入,因此不需要可枚举对象。你需要它的原始性能

测试以下各项:

PS 5.1

获取内容$args[0],$args[1]-编码字节-Raw |设置内容-Path'output.txt'-编码字节 PS 6+

获取内容$args[0],$args[1]-AsByteStream-Raw | Set Content-Path'output.txt'-AsByteStream 附言:
内存使用率将高于默认的流式方法。如果您的二进制文件没有那么大,这应该不是问题。

请尝试加载/使用原始内容

默认情况下,Get Content以X类型的数组(通常是字符串数组)的形式解析或尝试转换输入

经过短暂的测试。。PS 5.1使用-Encoding Byte作为字节,PS 6+使用-AsByteStream作为字节,PowerShell引擎流解析输入到管道,而不是作为一个整体。PS6+参数名称表明已经存在

因此,请尝试为此使用-Raw参数。由于您不想以任何方式循环输入,因此不需要可枚举对象。你需要它的原始性能

测试以下各项:

PS 5.1

获取内容$args[0],$args[1]-编码字节-Raw |设置内容-Path'output.txt'-编码字节 PS 6+

获取内容$args[0],$args[1]-AsByteStream-Raw | Set Content-Path'output.txt'-AsByteStream 附言:
内存使用率将高于默认的流式方法。如果您的二进制文件没有那么大,这不应该是一个问题。

请注意,您不是在回答手头的问题,而是一个问题主体仅链接到的不同问题。请注意,您不是在回答手头的问题,而是一个问题主体仅链接到的不同问题。