![](/img/trans.png)
[英]Nested cmd.exe command within a powershell.exe command called through 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/
或者您可以使用此站點進行編碼/解碼
找到它,我會留在這里,因為它對其他用戶有用:
原始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.