Это не проблема кода PowerShell.
Многие конфиги в Windows требуют, чтобы вы были администратором на коробке. Итак, , если Windows требуется администратор, тогда администратор должен использовать в сеансе PowerShell.
Кроме того, эта команда, как написано, не совсем правильная. Кавычки имеют значение при запуске внешних команд / исполняемых файлов.
PowerShell: запуск исполняемых файлов
- Оператор звонков &
Почему: используется для обработки строки как ОДНОЙ команды. Полезно для общения
с пробелами.
В PowerShell V2.0, если вы используете 7z.exe (7-Zip.exe) или другой
Команда, которая начинается с числа, вы должны использовать команду
Оператор вызова &.
Синтаксический анализатор PowerShell V3.0 теперь работает умнее, в этом случае вы не
нужно & больше.
Сведения: запускает команду, сценарий или блок сценария. Оператор звонка,
также известный как «оператор вызова», позволяет запускать команды, которые
хранятся в переменных и представлены строками. Потому что звонок
оператор не анализирует команду, он не может интерпретировать команду
Параметры
Пример:
& 'C:\Program Files\Windows Media Player\wmplayer.exe' "c:\videos\my home video.avi" /fullscreen
Вещи могут быть сложными, когда внешняя команда имеет много параметров
или в аргументах или путях есть пробелы!
С пробелами вы должны вкладывать кавычки, а в результате это не
всегда ясно!
В этом случае лучше все разделить так:
$CMD = 'SuperApp.exe'
$arg1 = 'filename1'
$arg2 = '-someswitch'
$arg3 = 'C:\documents and settings\user\desktop\some other file.txt'
$arg4 = '-yetanotherswitch'
& $CMD $arg1 $arg2 $arg3 $arg4
# or same like that:
$AllArgs = @('filename1', '-someswitch', 'C:\documents and settings\user\desktop\some other file.txt', '-yetanotherswitch')
& 'SuperApp.exe' $AllArgs