补充 Lee Dailey的回答很有帮助 :李指出,你的主要问题是你 的 忽视了 逃逸 该 " 字符。 嵌入式 在你的整体 "..." 命令 强> 。
"
"..."
假设你是 的 从中调用命令 外 PowerShell 强> ,如来自 cmd.exe (命令提示符):
cmd.exe
运用 的 嵌入式 单 - ( '...' )代替嵌入式 "..." 是一个选择 在这种情况下 强> ,如Lee的回答所示,因为 CategoryView 被视为一个 的 文字 串 强> 。 运用 ' 用于嵌入式引用方便 的 避免了逃避的必要性。 强>
'...'
CategoryView
'
但是,在嵌入字符串包含的情况下 的 变量引用 (例如。, $var ) 要么 表达式 (例如, $(Get-Date) ),使用双引号字符串( "..." ) 是必须的 强> ,因为只有双引号字符串 扩张 (插值)。 的 逃离嵌入式 " 如 \" 是必须的 强> 。
$var
$(Get-Date)
\"
`"
# From cmd.exe, for instance. C:\>powershell.exe -command "$ErrorView = \"CategoryView\"; dir wrong.txt"
如果由于某种原因,你必须 的 从中调用另一个PowerShell实例 内 PowerShell,使用一个 脚本块 强> ( { ... } ),这也消除了转义的需要(并通过返回更好地与调用会话集成) 对象 从调用,而不仅仅是 字符串 )。
{ ... }
# From Powershell. PS> powershell.exe -command { $ErrorView = "CategoryView" ; dir wrong.txt }