Liang Cui
Liang Cui

Reputation: 131

how to escape space and ampersand in same time in powershell script that execute CMD

In my Powershell script, I use "rmtshare.exe" to get information about share level permission. The "rmtshare.exe" can run perfectly under CMD environment with following command:

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

However, when I bring it to powershell environment. I can't figure out how to escape the space and the ampersand. Here is what I have tried so far which it is not working:

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

The script above will give error message from the CMD, it said "if a sharename or path contains spaces, it should be enclosed in quotes". If I changed the last line to this:

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

The error message was from Powershell itself, it said "The ampersand (&) character is not allowed". NOTE: if there is no ampersand, it works. So, now I am stuck because I need to escape both characters at the same time.

Please offer your solution.

You may need to download the rmtshare.exe to test out yourself. Download site: (https://www.symantec.com/connect/downloads/remove-folder-share-remote-computer)

Upvotes: 1

Views: 1064

Answers (1)

Liang Cui
Liang Cui

Reputation: 131

so, here is the code in Powershell that overcame the problem - escape space and ampersand in same time in powershell script that execute 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)

There should be other solutions as well. Please post if you know it.

Upvotes: 1

Related Questions