Аргумент командной строки Powershell с пробелами и фигурными скобками?

Я делаю попытку в своей первой powershell script и получаю плохую ошибку параметра при запуске следующего кода. Как передать аргумент команде в powersehll?

& "bcdedit" /store c:\boot\bcd /set {bootmgr} device partition=C:

EDIT: Рабочий код для этого:

& "bcdedit" /store c:\boot\bcd /set "{bootmgr}" device partition=C:

Ответ 1

Кудрявые скобки отбросили все. Постановка кавычек вокруг {bootmgr} устраняет проблему.

& "bcdedit" /store c:\boot\bcd /set "{bootmgr}" device partition=C:

Ответ 2

Проблема, с которой вы сталкиваетесь, заключается в том, что синтаксический анализатор PowerShell работает иначе, чем синтаксический анализатор cmd.exe. Один из способов - передать команду cmd.exe и дать ей синтаксический анализ.

Для этого передайте команду cmd.exe с помощью параметра /c в виде строки с одной кавычкой.

cmd.exe /c 'bcdedit /store c:\boot\bcd /set {bootmgr} device partition=C:'

Этот метод особенно полезен, когда для команды, которую вы используете, требуются аргументы с строковыми кавычками.