Як запустити скрипт PowerShell


710

Як запустити сценарій PowerShell?

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

який точно не повертає, за винятком того, що виводиться ім'я файлу.

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

Файл .ps1 повинен запускати програму і повертати рівень помилки залежно від виходу програми. Але я цілком впевнений, що навіть ще не туди потрапляю.

Що я роблю неправильно?


2
Почніть так, powershellяк ви б почали cmd. Тепер ви можете виконати myscript.ps1скрипт як будь-який виконуваний там файл у (у вікні powerhell), тобто.\myscript.ps1
парашутувати

Відповіді:


731
  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 - Danny Pflughoeft

16
Відповідно до technet.microsoft.com/en-us/library/ee176949.aspx , "&" призначено для "Якщо ви дійсно хочете виконати це рядкове значення (тобто якщо ви хочете запустити сценарій, шлях якого укладений у подвійні лапки), потрібно попередньо задати шлях оператору виклику (амперсанда). "
Дуг Доусон

29
жодне з них не працювало на мене, поки я не обійшов виконання за замовчуванням повноважень по монтажу для мого щойно створеного неподписаного сценарію. Крім усього іншого, для цього потрібен перезапуск повноважень як адміністратора. Цілком погоджуєтесь з @LukePuplett - це геніально, щоб зробити найпростішим випадком використання 20 хвилин гуглінгу та фетшингу. І повідомлення про помилки! Мабуть, ці хлопці працювали в IBM ... у 70-х.
Spike0xff

14
Як зазначено в коментарі нижче, політику виконання покарань слід обійти. Один із пунктів, про який тут не йдеться, - це запуск сценарію оболонки з командного рядка, що передає параметр. Для цього: наберітьpowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Джим Ламан

229

Якщо ви перебуваєте на 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>]
Кіт Хілл

"не можна завантажити, оскільки виконання скриптів у цій системі відключено. Будь ласка, перегляньте" отримати довідку про_значення "для більш детальної інформації."
Павло Власов

7
Якщо ви не ввімкнули виконання сценарію PowerShell у вашій системі, додайте параметр-ExecutionPolicy Bypass
Keith Hill

4
FYI це також працює для PowerShell 1.0 в моєму досвіді (Windows 2012 Server)
knocte

189

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

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

11
Також включіть -nologoможливість позбутися запуску банера
swdev

73

Тип:

powershell -executionpolicy bypass -File .\Test.ps1

ПРИМІТКА. Ось Test.ps1сценарій PowerShell.


Це має бути виконано в оболонці повноважень, оскільки, powershell -executionpolicy bypass -File .\Test.ps1якщо у вашому поточному робочому каталозі міститься Test.ps1
Yeow_Meng

29

У мене була така ж проблема, і я намагався і намагався ... Нарешті я використав:

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

І помістіть цей рядок у batch-файл, і це працює.


22

Якщо у вас є лише PowerShell 1.0 , це, здається, досить добре виконає трюк:

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

Він передає файл сценарію до командного рядка PowerShell.


3
Корисний трюк, коли політики безпеки не дозволяють виконувати сценарії.
Арон Лорінц

17

Досить легко. Клацніть правою кнопкою миші файл .ps1 у Windows та в меню оболонки натисніть кнопку Запустити з PowerShell .


Це працює для швидкого запуску сценарію без необхідності ввімкнення виконання сценаріїв із політикою виконання. Дякую!
b01

Це те, що я дивився, дякую!
Аамол

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
він абсолютно відповідає на питання: як запустити скрипт powerhell? відповідь: запуск консолі PowerShell, а потім виконати сценарій. легко. простий. Працює і в Linux.
Туфір

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.