在我的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)
答案 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)
还应该有其他解决方案。如果你知道的话请发帖。