2016-12-13 43 views
1

在我的Powershell腳本中,我使用「rmtshare.exe」來獲取有關共享級別權限的信息。 「rmtshare.exe」可以在CMD環境下使用以下命令完美運行:如何在執行CMD的powershell腳本中同時轉義空間和&符號

rmtshare.exe \\fs-sw-206\"C&C FQT" 

但是,當我將它帶入PowerShell環境時。我無法弄清楚如何逃避空間和&符。這裏是我到目前爲止已經試過它不工作:

$rmtShare = "C:\rmtshare.exe" 
$ServerName = "fs-sw-206" 
$ShareName = "C&C FQT" 
Invoke-Expression ($rmtShare + " " + "\\" + $ServerName + "\" + $ShareName) 

上面的腳本會給錯誤信息從CMD,它說:「如果一個共享名或路徑包含空格,應當用引號括起來」 。 如果我改變了最後一行是:

Invoke-Expression ($rmtShare + " " + "\\" + $ServerName + "\" + "'"+'"'+"'" + $ShareName +"'"+'"'+"'") 

錯誤消息是從Powershell的本身,它說:「與號(&)字符是不允許的」。注意:如果沒有&符號,它將起作用。所以,現在我被卡住了,因爲我需要同時逃脫兩個角色。

請提供您的解決方案。

您可能需要下載rmtshare.exe才能自行測試。下載網站:(https://www.symantec.com/connect/downloads/remove-folder-share-remote-computer

+1

' - %'本身就會將所有內容都轉義出來,您可以合併變量,請檢查以下內容:http://ss64.com/ps/syntax-esc.html – 4c74356b41

+0

感謝提示!是的,它的工作是與 - %合併。我會在稍後發佈最終解決方案。 –

回答

1

所以,這裏是在PowerShell中的代碼,克服了問題 - 逃生空間和同一時間執行符號在PowerShell腳本CMD

$s = " " 
$q = '"' 
$Verbatim = '--%' 
$rmtShare = "C:\rmtshare.exe" 
$ServerName = "fs-sw-206" 
$ShareName = "C&C FQT" 
Invoke-Expression ($rmtShare +$s+$Verbatim+$s+"\\"+$ServerName+"\"+$q+$ShareName+$q) 

應該有其他的解決方案,以及。如果您知道,請發佈。

相關問題