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

Windows 如何在执行CMD的powershell脚本中同时转义空格和符号,windows,powershell,cmd,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

在我的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来测试自己。下载站点:()

因此,下面是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)

还应该有其他的解决办法。请张贴,如果你知道它

-->%
会在自身之后转义所有内容,您可以合并变量,请检查:谢谢提示!是的,它通过与--%合并工作。我将在稍后发布最终解决方案。