-1

У меня есть test.bat для запуска test.ps1 с правами администратора и неограниченными политиками, и оба находятся в одной папке (на локальном ПК), но bat не запускает ps1. В чем дело?

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy Unrestricted -Force -File" "% ~ dpn0.ps1" "' -Verb RunAs}"

И мой сценарий похож на этот

1 ответ1

0

У вас есть несколько проблем:

  1. У вас есть вложенные двойные кавычки, которые запутывают его, вам нужно избегать внутренних кавычек и / или использовать одинарные кавычки внутри двойных кавычек.
  2. У вас есть лишние пробелы в вашем вызове " % ~ DPN0 ".
  3. Вы неправильно объединяете переменную имени сценария (% ~ DPN0) в свой ArgumentList.
  4. Start-Processes ArgumentList принимает массив строк (string[]), а не разделенный пробелами список. Чтобы передать статический массив строк, разделяйте строковые элементы запятыми.
  5. Вы также пытаетесь запустить -command и -file и вы не можете использовать как аргумент -file и -command аргумент в одном вызове PowerShell.exe.
  6. Вы пытаетесь запустить команду PowerShell (Set-ExecutionPolicy) без указания аргумента -command . Чтобы задать политику выполнения для сеанса Powershell.exe, который вы пытаетесь запустить, используйте параметр -ExecutionPolicy PowerShell.exe вместо попытки запуска команды Set-ExecutionPolicy .

Вот исправленная версия вашей команды:

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "Start-Process PowerShell -ArgumentList '-ExecutionPolicy Unrestricted','-File %~dpn0.ps1' -Verb RunAs"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .