簡體   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