2016-12-13 16 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) 

应该有其他的解决方案,以及。如果您知道,请发布。

相关问题