我想将以下条目从PowerShell传递给cmd行。怎么办?
["192.168.10.1|443|Atulkatiyar|passw$h"]
如何在PowerShell命令中编写并可以在命令行中执行?
答案 0 :(得分:0)
$content
cmd --% /c ["192.168.10.1|443|Atulkatiyar|passw$h"]
是一个转义序列,其后的所有内容都传递给未修改的可执行文件
答案 1 :(得分:0)
cmd.exe /C "echo `[`"192.168.10.1`|443`|Atulkatiyar`|passw`$h`"`]"
答案 2 :(得分:0)
目前还不清楚你的意思是"传递到cmd行"。
从PowerShell的角度来看,如果您希望将问题中的字符串视为文字,只需将其括在'...'
中(单引号;附上嵌入单引号(如果有),如''
):
> '["192.168.10.1|443|Atulkatiyar|passw$h"]'
["192.168.10.1|443|Atulkatiyar|passw$h"]
如果要将此文字传递给cmd.exe
,标准命令处理器同样适用:
> cmd /c echo '["192.168.10.1|443|Atulkatiyar|passw$h"]'
["192.168.10.1|443|Atulkatiyar|passw$h"]
也就是说,你的字符串包含$h
,它看起来像是对PowerShell变量的引用 - 如果你想首先展开(插入)引用,需要采用不同的方法;在以下命令中,使用带有二元运算符+
的字符串连接:
> $h = 'Hi!'
> ('["192.168.10.1|443|Atulkatiyar|passw' + $h + '"]' )
["192.168.10.1|443|Atulkatiyar|passwHi!"]
> cmd /c echo ('["192.168.10.1|443|Atulkatiyar|passw' + $h + '"]' )
["192.168.10.1|443|Atulkatiyar|passwHi!"]
或者,通常情况下,您可以使用 double 引用的字符串来嵌入应该展开的变量引用($<varName>
)和子表达式($(...)
) / em>(插值:替换为它们的值) - 在这种情况下,使用`
(反引号)来转义嵌入的"
(以及$
字符(如果需要):
> "[`"192.168.10.1|443|Atulkatiyar|passw$h`"]"
["192.168.10.1|443|Atulkatiyar|passwHi!"]
> cmd /c echo "[`"192.168.10.1|443|Atulkatiyar|passw$h`"]"
["192.168.10.1|443|Atulkatiyar|passwHi!"]
其他选择:
-f
运算符进行字符串格式化,其中LHS包含占位符,例如{0}
(第一个操作数),它们使用RHS上的值进行实例化(基于.NET)框架的String.Format
method - 另见here):> ('["192.168.10.1|443|Atulkatiyar|passw{0}"]' -f $h)
["192.168.10.1|443|Atulkatiyar|passwHi!"]
> cmd /c echo ('["192.168.10.1|443|Atulkatiyar|passw{0}"]' -f $h)
["192.168.10.1|443|Atulkatiyar|passwHi!"]
--%
&#34;停止解析&#34; switch允许您将剩余的参数传递到cmd.exe
as cmd.exe
样式的环境变量引用,例如{{ 1}};请注意,这意味着PowerShell变量引用和子表达式将不展开。