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

marc_s
источник
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.

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

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

electronictonic
источник
Это работает для быстрого запуска сценария без необходимости включать выполнение сценариев с политикой выполнения. Спасибо!
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. В разделе «Уровень привилегий» убедитесь, что установлен флажок «Запускать программу от имени администратора».
Kiquenet
источник
11

Самый простой способ - это использовать PowerShell ISE , открыть скрипт, запустить и вызвать скрипт, функцию ...

Введите описание изображения здесь

Хосе Эваристо Сепеда Баррера
источник
10

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

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

rainabba
источник
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 и запустите ваш скрипт.

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

solstinger
источник