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


712

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

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

который ничего не возвращает, кроме того, что имя файла выводится.

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

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

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


2
Начните так, powershellкак вы бы начали cmd. Теперь вы можете выполнить myscript.ps1скрипт как любой исполняемый файл там (в окне powershell), то есть.\myscript.ps1
parasrish

Ответы:


733
  1. Запустите Windows PowerShell и подождите, пока появится PSкомандная строка
  2. Перейдите в каталог, где живет скрипт

    PS> cd C:\my_path\yada_yada\ (enter)
  3. Выполните скрипт:

    PS> .\run_import_script.ps1 (enter)

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

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

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

согласно этому сообщению в блоге здесь

Или вы можете даже запустить скрипт PowerShell из приложения на C # :-)

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


19
Ваша ссылка на пост в блоге сделала это. Я должен использовать powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(обратите внимание на три двойные кавычки), я не очень понимаю, почему, но на данный момент мне все равно :) Спасибо большое!
Пекка

16
Что именно делает "&?
BlueRaja - Дэнни Пфлугхофт

16
Согласно technet.microsoft.com/en-us/library/ee176949.aspx , «&» для «Если вы действительно хотите выполнить это строковое значение (то есть, если вы хотите запустить сценарий, путь которого заключен в двойные кавычки) вам необходимо предварять путь с помощью оператора Call (амперсанд). "
Даг Доусон

29
ни один из них не работал для меня, пока я не обошел политику выполнения powershell по умолчанию для моего только что созданного неподписанного скрипта. Среди прочего это потребовало перезапустить PowerShell от имени администратора. Полностью согласен с @LukePuplett - просто замечательно, что самый простой вариант использования занимает 20 минут поиска и поиска в Интернете. И сообщения об ошибках! Видимо, эти ребята работали в IBM ... в 70-х годах.
Spike0xff

15
Как указано в комментарии ниже, политика выполнения должна быть обойдена. Один из пунктов, который здесь не обсуждается, - это как запустить скрипт powershell из командной строки, передавая параметр. Для этого: наберитеpowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Джим Лахман

230

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

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1

5
Есть ли способ добавить параметры для такого вызова?
Александр Грос

11
Вы должны просто иметь возможность отследить аргументы после пути к файлу сценария. Из использования PowerShell.exe - [-File <filePath> <args>]
Кит Хилл

"не может быть загружен, потому что выполнение сценариев отключено в этой системе. Пожалуйста, смотрите" get-help about_signing "для более подробной информации."
Павел Власов

7
Если вы не включили выполнение сценариев PowerShell в своей системе, добавьте параметр-ExecutionPolicy Bypass
Keith Hill

4
К вашему сведению, это также работает для PowerShell 1.0 по моему опыту (Windows 2012 Server)
knocte

189

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

powershell [-noexit] -executionpolicy bypass -File <Filename>

11
Кроме того, -nologo
включите

73

Тип:

powershell -executionpolicy bypass -File .\Test.ps1

ПРИМЕЧАНИЕ. Вот Test.ps1сценарий PowerShell.


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

29

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

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

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


22

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

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

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


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

17

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


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

Это то, что я искал, спасибо!
Aamol

11

Использование 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

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

  1. Сделать ярлык, указывающий на командную строку (я назвал ее административной командной строкой)
  2. Откройте свойства ярлыка и перейдите на вкладку Совместимость
  3. В разделе «Уровень привилегий» убедитесь, что установлен флажок «Запускать программу от имени администратора».


10

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

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


2
Как это отвечает на вопрос?
Питер Мортенсен,

4
это абсолютно отвечает на вопрос: как запустить скрипт powershell? Ответ: запустите консоль PowerShell, затем выполните скрипт. легко. просто. Работает на Linux также.
Thufir

4
Это абсолютно отвечает на вопрос, и это было именно то, что я искал. как myscript.ps1не сработало, выкинул ошибку, но с ./ее выполнением.
Джефф

7
  • Укажите путь к скрипту, то есть путь к файлу с помощью cmd:

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

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

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


Выполнение ваших команд из командной строки cmd: >$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.и>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
Suncat2000

7

Если вы хотите запустить скрипт PowerShell с помощью планировщика задач Windows, выполните следующие действия:

  1. Создать задачу

  2. Установите Program/ScriptнаPowershell.exe

  3. Установите Argumentsна-File "C:\xxx.ps1"

Это из другого ответа: Как мне автоматически выполнить сценарий PowerShell с помощью планировщика задач Windows? ,


1

Используйте -Fileпараметр перед именем файла. Кавычки заставляют PowerShell думать, что это строка команд.


1

У меня есть очень простой ответ, который работает:

  1. Откройте PowerShell в режиме администратора
  2. Запустить: set-executionpolicy unrestricted
  3. Откройте обычное окно PowerShell и запустите ваш скрипт.

Я нашел это решение по ссылке, указанной в сообщении об ошибке: О политиках выполнения

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.