В дополнение к Полезный ответ Ли Дейли : Как отмечает Ли, ваша основная проблема заключается в том, что вы пренебрегли побегом "
символов. встроено в вашу общую команду "..."
.
Предполагая, что вы вызываете команду из вне PowerShell , например из cmd.exe
(Командная строка):
Использование встроенного одиночного -цитирования ('...'
) вместо встроенного "..."
является опцией в данном случае , так как показано в ответе Ли, потому что CategoryView
должен рассматриваться как литерал строка .
Удобное использование '
для встроенного цитирования устраняет необходимость в экранировании.
Однако в случаях, когда встроенная строка содержит ссылки на переменные (например, $var
) или выражений (например, $(Get-Date)
), используйте строки в двойных кавычках ("..."
) является обязательным , поскольку только строки в двойных кавычках расширяются (с интерполяцией). Выход из встроенного "
в \"
становится обязательным .
- Обратите внимание, что, напротив, внутри PowerShell
"
символов. должен быть экранирован как `"
.
# 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 }