繁体   English   中英

对powershell.exe正确转义命令(从CMD.exe启动命令)

[英]Escaping command correctly for powershell.exe (launch command from CMD.exe)

如何正确逃避以下命令? 我需要从CMD运行powershell命令,因为它是一个stubpath值。 stubpath的注册表值无法本机运行powershell命令。 该命令已经过验证且工作正常。 问题只是让它通过powershell.exe -command "..."运行 - powershell.exe -command "..."

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "(Get-WmiObject -Class Win32_Printer | where-object { $_.Name -eq ("IPL" + ($env:COMPUTERNAME).Substring(1, 4)) }).SetDefaultPrinter()"

由于双引号,它现在正在“IPL”打破界限。 我想我必须逃脱管道很好。

非常感激!

你可以试试这个

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "& { (Get-WmiObject -Class Win32_Printer | where-object { $_.Name -eq (\"IPL\" + ($env:COMPUTERNAME).Substring(1, 4)) }).SetDefaultPrinter() }"

否则,我想做什么来避免逃避任何东西是将命令编码到base64,然后使用powershell -encodedcommand,像这样

powershell.exe -NoProfile -ExecutionPolicy Bypass -EncodedCommand KABHAGUAdAAtAFcAbQBpAE8AYgBqAGUAYwB0ACAALQBDAGwAYQBzAHMAIABXAGkAbgAzADIAXwBQAHIAaQBuAHQAZQByACAAfAAgAHcAaABlAHIAZQAtAG8AYgBqAGUAYwB0ACAAewAgACQAXwAuAE4AYQBtAGUAIAAtAGUAcQAgACgAIgBJAFAATAAiACAAKwAgACgAJABlAG4AdgA6AEMATwBNAFAAVQBUAEUAUgBOAEEATQBFACkALgBTAHUAYgBzAHQAcgBpAG4AZwAoADEALAAgADQAKQApACAAfQApAC4AUwBlAHQARABlAGYAYQB1AGwAdABQAHIAaQBuAHQAZQByACgAKQA=

这是一个关于如何编码命令的信息的链接。 这甚至适用于完整的多行脚本

https://blogs.msdn.microsoft.com/timid/2014/03/26/powershell-encodedcommand-and-round-trips/

或者您可以使用此站点进行编码/解码

https://www.base64decode.org/

找到它,我会留在这里,因为它对其他用户有用:

原始powershell命令:

(Get-WmiObject -Class Win32_Printer | where-object { $_.Name -eq ("IPL" + ($env:COMPUTERNAME).Substring(1, 4)) }).SetDefaultPrinter()

要从CMD.EXE运行,您必须转义双引号,如\\"IPL\\"而不是"IPL"

工作指令:

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "(Get-WmiObject -Class Win32_Printer | where-object { $_.Name -eq (\"IPL\" + ($env:COMPUTERNAME).Substring(1, 4)) }).SetDefaultPrinter()"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM