在我的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的错误消息,它表示“如果共享名或path包含空格,则应该用引号括起来”。 如果我把最后一行改为:
Invoke-Expression ($rmtShare + " " + "\\" + $ServerName + "\" + "'"+'"'+"'" + $ShareName +"'"+'"'+"'")
错误信息来自Powershell本身,它表示“&符号(&)不允许”。 注意:如果没有&符号,它将起作用。 所以,现在我被卡住了,因为我需要同时转义两个字符。
请提供您的解决scheme。
您可能需要下载rmtshare.exe来testing自己。 下载站点:( https://www.symantec.com/connect/downloads/remove-folder-share-remote-computer )
所以,下面是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)
还应该有其他解决方案。 如果你知道的话请发帖。