如何在执行CMD的powershell脚本中同时转义空格和&符号

时间:2016-12-13 19:52:29

标签: windows powershell cmd

在我的Powershell脚本中,我使用" rmtshare.exe"获取有关共享级别权限的信息。 " rmtshare.exe"可以使用以下命令在CMD环境下完美运行:

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 个答案:

答案 0 :(得分:1)

所以,这是Powershell中的代码克服了这个问题 - 在执行CMD的powershell脚本中同时逃避空间和&符号

$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)

还应该有其他解决方案。如果你知道的话请发帖。