Как запустить скрипт 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.