Как запустить скрипт PowerShell

474

Как запустить PowerShell script?

  • У меня есть script с именем myscript.ps1
  • У меня установлены все необходимые фреймворки
  • Я установил политику выполнения.
  • Я выполнил инструкции эту страницу справки MSDN и я пытаюсь запустить его так: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1' (с помощью или withot --noexit)

который возвращает точно ничего, за исключением того, что выводится имя файла. Нет ошибок, нет сообщений, ничего. О, когда я добавляю -noexit, происходит то же самое, но я остаюсь в PowerShell и должен выйти вручную.

Файл ps1 должен запускать программу и возвращать уровень ошибки в зависимости от выхода этой программы. Но я вполне уверен, что еще не добрался.

Что я делаю неправильно?

  • 2
    Запустите powershell как вы бы запустили cmd . Теперь вы можете выполнить скрипт myscript.ps1 как любой исполняемый файл там (в окне powershell), т .\myscript.ps1
Теги:
powershell
scripting

11 ответов

484
Лучший ответ
  • Запустите Windows PowerShell и подождите минуту, пока появится командная строка PS
  • Перейдите в каталог, в котором script живет

    PS> cd C:\my_path\yada_yada\ (enter)
    
  • Выполните script:

    PS> .\run_import_script.ps1 (enter)
    

Что мне не хватает?

Или: вы можете запустить PowerShell script из cmd.exe следующим образом:

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)

согласно этому сообщению

Или вы даже можете запустить свою Powershell script из своего приложения С#:-)

Асинхронно выполнять сценарии PowerShell из вашего приложения С#

  • 0
    Это действительно работает, но мне нужно сделать это из пакетного файла. Очевидно, мой способ вызова powershell.exe а затем файл сценария как-то облажался. У вас есть идеи, как это изменить?
  • 18
    Ваша ссылка на пост в блоге сделала это. Я должен использовать powershell -noexit "& "C:\yada_yada\run_import_script.ps1" (обратите внимание на три двойные кавычки). Я не очень понимаю, почему, но на данный момент мне все равно :) Большое спасибо !
Показать ещё 8 комментариев
148

Если вы используете PowerShell 2.0, используйте параметр PowerShell.exe -File для вызова script из другой среды, например cmd.exe, например:

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1
  • 5
    Есть ли способ добавить параметры для такого вызова?
  • 10
    Вы должны просто иметь возможность отследить аргументы после пути к файлу сценария. Из использования PowerShell.exe - [-File <filePath> <args>]
Показать ещё 3 комментария
129

Если вы хотите запустить script без изменения политики выполнения по умолчанию script, вы можете использовать переключатель обхода при запуске Windows PowerShell.

powershell [-noexit] -executionpolicy bypass -File <Filename>
  • 9
    Также -nologo опцию -nologo чтобы избавиться от загрузочного баннера.
25

Тип:

powershell -executionpolicy bypass -File .\Test.ps1

ПРИМЕЧАНИЕ. Здесь Test.ps1 находится PowerShell script.

  • 0
    Это должно быть выполнено в powershell как powershell -executionpolicy bypass -File .\Test.ps1 при условии, что текущий рабочий каталог содержит Test.ps1
24

У меня была такая же проблема, и я попытался и попытался... Наконец, я использовал:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

И поместите эту строку в пакетный файл, и это работает.

18

Если у вас есть только PowerShell 1.0, это, похоже, достаточно хорошо делает:

powershell -command - < c:\mypath\myscript.ps1

Он передает файл script в командную строку PowerShell.

  • 3
    Полезный трюк, когда политики безопасности не разрешают выполнение скрипта.
6

Использование файла cmd (BAT):

@echo off
color 1F
echo.

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"

:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL

Если вам нужно запустить как администратор:

  • Сделайте ярлык, указывающий на командную строку (я назвал ее Административная командная строка)
  • Откройте свойства ярлыка и перейдите на вкладку Совместимость
  • В разделе "Уровень привилегий" установите флажок "Запустить эту программу в качестве администратора".
5

Простым способом является использование PowerShell ISE, откройте script, запустите и вызовите функцию script,...

Изображение 7230

4
  • Укажите путь к script, то есть настройку пути по cmd:

    $> . c:\program file\prog.ps1

  • Запустите функцию точки входа PowerShell:

    Например, $> add or entry_func or main

3

Довольно легко. Щелкните правой кнопкой мыши файл .ps1 в Windows и в меню оболочки выберите "Выполнить с PowerShell".

  • 0
    Это работает для быстрого запуска сценария без необходимости включать выполнение сценариев с политикой выполнения. Спасибо!
  • 0
    Это то, что я искал, спасибо!
0

Если ваш script имеет имя с расширением .ps1 и вы находитесь в окне PowerShell, вы просто запустите ./myscript.ps1 (если файл находится в вашем рабочем каталоге).

Это правда для меня в любом случае в Windows 10 с PowerShell версии 5.1 в любом случае, и я не думаю, что я сделал что-либо, чтобы сделать это возможным.

  • 2
    Как это отвечает на вопрос?
  • 3
    это абсолютно отвечает на вопрос: как запустить скрипт powershell? Ответ: запустите консоль PowerShell, затем выполните сценарий. легко. просто. Работает на Linux также.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню