Jak uruchomić skrypt PowerShell


710

Jak uruchomić skrypt PowerShell?

  • Mam skrypt o nazwie myscript.ps1
  • Mam zainstalowane wszystkie niezbędne frameworki
  • Ustawić, że polityka realizacji rzeczą
  • Postępowałem zgodnie z instrukcjami na tej stronie pomocy MSDN i próbuję uruchomić go w następujący sposób: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(z lub bez --noexit)

który zwraca dokładnie nic, z wyjątkiem tego, że nazwa pliku jest wyprowadzana.

Bez błędu, bez wiadomości, nic. Och, kiedy dodam -noexit, dzieje się to samo, ale pozostaję w PowerShell i muszę wyjść ręcznie.

Plik .ps1 ma uruchamiać program i zwracać poziom błędu w zależności od wyniku tego programu. Ale jestem całkiem pewien, że jeszcze się tam nie dostaję.

Co ja robię źle?


2
Rozpocznij powershelltak, jak byś zaczął cmd. Teraz możesz wykonać myscript.ps1skrypt jako dowolny plik wykonywalny (w oknie programu PowerShell), tj..\myscript.ps1
parasrish

Odpowiedzi:


731
  1. Uruchom Windows PowerShell i poczekaj chwilę, PSaż pojawi się wiersz polecenia
  2. Przejdź do katalogu, w którym mieszka skrypt

    PS> cd C:\my_path\yada_yada\ (enter)
  3. Uruchom skrypt:

    PS> .\run_import_script.ps1 (enter)

Czego mi brakuje??

Lub: możesz uruchomić skrypt PowerShell z cmd.exenastępującego:

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

zgodnie z tym postem na blogu tutaj

Lub możesz nawet uruchomić skrypt PowerShell z aplikacji C # :-)

Asynchronicznie wykonuj skrypty PowerShell z aplikacji C #


19
Link do posta na blogu to zrobił. Muszę użyć powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(zauważ trzy podwójne cytaty). Naprawdę nie rozumiem dlaczego, ale w tym momencie nie obchodzi mnie to :) Bardzo dziękuję!
Pekka

16
Co dokładnie robi "&?
BlueRaja - Danny Pflughoeft

16
Według technet.microsoft.com/en-us/library/ee176949.aspx , „&” oznacza „Jeśli naprawdę chcesz wykonać tę wartość ciągu (to znaczy, jeśli chcesz uruchomić skrypt, którego ścieżka jest zawarta w podwójne cudzysłowy) musisz poprzedzić ścieżkę operatorem połączenia (znak ampersand). ”
Doug Dawson

29
żadne z nich nie działało dla mnie, dopóki nie ominąłem domyślnej polityki wykonywania programu PowerShell dla mojego świeżo utworzonego niepodpisanego skryptu. Wymagało to między innymi zrestartowania programu PowerShell jako Administrator. Całkowicie zgadzam się z @LukePuplett - genialne jest, aby najprostszy przypadek użycia zajął 20 minut googlingu i wybiegania. I komunikaty o błędach! Najwyraźniej ci faceci pracowali w IBM ... w latach 70.
Spike0xff

14
Jak stwierdzono w komentarzu poniżej, zasady wykonywania muszą zostać ominięte. Jednym z elementów, które nie zostały tutaj omówione, jest sposób uruchomienia skryptu PowerShell z wiersza poleceń przekazującego parametr. Aby to zrobić: wpiszpowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Jim Lahman

229

Jeśli korzystasz z programu PowerShell 2.0, użyj -Fileparametru PowerShell.exe, aby wywołać skrypt z innego środowiska, na przykład cmd.exe. Na przykład:

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

5
Czy istnieje sposób na dodanie parametrów do takiego wywołania?
Alexander Groß

11
Powinieneś być w stanie śledzić argumenty po ścieżce pliku skryptu. Z użycia PowerShell.exe - [-Plik <ścieżka pliku> <args>]
Keith Hill

”nie można załadować, ponieważ wykonywanie skryptów jest wyłączone w tym systemie. Aby uzyskać więcej informacji, zobacz„ get-help about_signing ”.
Pavel Vlasov

7
Jeśli nie włączono wykonywania skryptu PowerShell w systemie, dodaj parametr-ExecutionPolicy Bypass
Keith Hill

4
Do Twojej wiadomości działa to również dla PowerShell 1.0 z mojego doświadczenia (Windows 2012 Server)
Knocte

189

Jeśli chcesz uruchomić skrypt bez modyfikowania domyślnej zasady wykonywania skryptu, możesz użyć przełącznika obejścia podczas uruchamiania programu Windows PowerShell .

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

11
-nologo
Dołącz

73

Rodzaj:

powershell -executionpolicy bypass -File .\Test.ps1

UWAGA: Oto Test.ps1skrypt PowerShell.


Powinno to zostać wykonane w PowerShell, powershell -executionpolicy bypass -File .\Test.ps1zakładając, że bieżący katalog roboczy zawiera Test.ps1
Yeow_Meng

29

Miałem ten sam problem i próbowałem i próbowałem ... W końcu użyłem:

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

I umieść tę linię w pliku wsadowym i to działa.


22

Jeśli masz tylko PowerShell 1.0 , wydaje się, że to wystarczy.

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

Potokuje plik skryptu do wiersza polecenia programu PowerShell.


3
Przydatna sztuczka, gdy zasady bezpieczeństwa nie pozwalają na wykonanie skryptu.
Aron Lorincz

17

Całkiem łatwe. Kliknij prawym przyciskiem myszy plik .ps1 w systemie Windows, aw menu powłoki kliknij polecenie Uruchom z PowerShell .


Działa to w celu szybkiego uruchomienia skryptu bez konieczności włączania wykonywania skryptów za pomocą zasad wykonywania. Dzięki!
b01

Właśnie tego szukałem, dzięki!
Aamol

11

Za pomocą pliku 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

Jeśli potrzebujesz uruchomić jako administrator :

  1. Utwórz skrót wskazujący wiersz polecenia (nazwałem go wierszem polecenia administracyjnego)
  2. Otwórz właściwości skrótu i ​​przejdź do karty Zgodność
  3. W sekcji Poziom uprawnień upewnij się, że pole wyboru obok „Uruchom ten program jako administrator” jest zaznaczone


10

Jeśli skrypt ma nazwę z .ps1rozszerzeniem i jesteś w oknie programu PowerShell, po prostu uruchom./myscript.ps1 (zakładając, że plik znajduje się w katalogu roboczym).

Tak jest i tak dla mnie w systemie Windows 10 z PowerShell w wersji 5.1 i nie sądzę, że zrobiłem nic, aby było to możliwe.


2
Jak to odpowiada na pytanie?
Peter Mortensen

4
absolutnie odpowiada na pytanie: jak uruchomić skrypt PowerShell? odpowiedź: uruchom konsolę PowerShell, a następnie uruchom skrypt. łatwy. prosty. Działa również w systemie Linux.
Thufir

4
To absolutnie odpowiada na pytanie i dokładnie tego szukałem. jak myscript.ps1nie działało, zgłosił błąd, ale z ./jego wykonaniem.
Jeff

7
  • Podaj ścieżkę skryptu, to znaczy ustawienie ścieżki przez cmd:

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

  • Uruchom funkcję punktu wejścia programu PowerShell:

    Na przykład, $> add or entry_func or main


Uruchamianie poleceń z wiersza polecenia cmd: >$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.oraz>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
Suncat2000


1

Użyj -Fileparametru przed nazwą pliku. Cytaty sprawiają, że PowerShell myśli, że to ciąg poleceń.


1

Mam bardzo prostą odpowiedź, która działa:

  1. Otwórz PowerShell w trybie administratora
  2. Biegać: set-executionpolicy unrestricted
  3. Otwórz zwykłe okno PowerShell i uruchom skrypt.

Znalazłem to rozwiązanie, korzystając z linku podanego w ramach komunikatu o błędzie: Informacje o zasadach wykonywania

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.