О PowerShell.exe
Когда значение Command является строкой, команда должна быть последним указанным параметром потому что любые символы, напечатанные после команды, интерпретируются как аргументы команды.
Параметр Command принимает блок сценария к исполнению только тогда, когда он может распознать значение, переданное в Command, как тип ScriptBlock. Это возможно только при запуске PowerShell.exe с другого хоста PowerShell. Тип ScriptBlock может содержаться в существующей переменной, возвращаться из выражения или анализироваться хостом PowerShell как буквальный блок сценария, заключенный в фигурные скобки {}, перед передачей в PowerShell.exe.
В cmd.exe нет такой вещи, как блок скрипта (или ScriptBlock тип), поэтому значение, переданное в Command, всегда будет строкой. Вы можете написать блок скрипта внутри строки, но вместо выполнения он будет вести себя точно так же, как если бы вы набирали его в типичном приглашении PowerShell, распечатывая содержимое блока скрипта обратно к вам.
Строка, переданная в Command, будет по-прежнему выполняться как PowerShell, поэтому фигурные скобки блока сценария часто не требуются в первую очередь при запуске из cmd.exe. Для выполнения блока встроенного скрипта , определенного внутри строки, оператор вызова & может использоваться:
console
"& {}"