Автоматический запуск сценария из другого сценария (например, пакетного файла)
Как предложил Мэтт Гамильтон, просто создайте сценарий PowerShell .ps1 и вызовите его, используя:
PowerShell C:\Path\To\YourPowerShellScript.ps1
или если рабочий каталог вашего пакетного файла находится в том же каталоге, в котором находится скрипт PowerShell, вы можете использовать относительный путь:
PowerShell .\YourPowerShellScript.ps1
И прежде чем это сработает, вам нужно установить Политику выполнения ПК, которую я покажу, как это сделать ниже.
Запуск сценария вручную Метод 1
Вы можете просмотреть мой блог для получения дополнительной информации , но по сути создайте свой файл сценария PowerShell .ps1, чтобы делать то, что вам нужно, а затем создайте пакетный файл .cmd в том же каталоге и используйте следующее для содержимого файла:
@ECHO OFF
SET ThisScriptsDirectory=%~dp0
SET PowerShellScriptPath=%ThisScriptsDirectory%MyPowerShellScript.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'"
Замена MyPowerShellScript.ps1 в 3-й строке именем файла сценария PowerShell.
Это позволит вам просто дважды щелкнуть командный файл для запуска сценария PowerShell и избежать необходимости изменять политику выполнения PowerShell.
В моем блоге также показано, как запускать скрипт PowerShell от имени администратора, если это то, что вам нужно сделать.
Запуск сценария вручную Метод 2
В качестве альтернативы, если вы не хотите создавать пакетный файл для каждого из ваших сценариев PowerShell, вы можете изменить поведение сценария PowerShell по умолчанию с Edit на Run, что позволит вам дважды щелкнуть файлы .ps1 для их запуска.
Существует дополнительный параметр реестра, который вы хотите изменить, чтобы можно было запускать сценарии, путь к файлу которых содержит пробелы. Я показываю, как сделать обе эти вещи в этом сообщении в блоге .
Однако, с помощью этого метода вам сначала нужно установить политику выполнения, чтобы разрешить запуск сценариев. Это необходимо сделать только один раз для каждого ПК, и это можно сделать, запустив эту строку в командной строке PowerShell.
Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy RemoteSigned -Force' -Verb RunAs
Set-ExecutionPolicy RemoteSigned -Force - это команда, которая фактически изменяет политику выполнения; это устанавливает его на RemoteSigned , так что вы можете изменить его на что-то другое, если вам нужно. Кроме того, эта строка автоматически запускает PowerShell от имени администратора, что необходимо для изменения политики выполнения.