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?

Pekka
źródło
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 #

marc_s
źródło
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
Keith Hill
źródło
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>
Chingiz Musayev
źródło
11
-nologo
Dołącz
73

Rodzaj:

powershell -executionpolicy bypass -File .\Test.ps1

UWAGA: Oto Test.ps1skrypt PowerShell.

Sudheesh
źródło
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.

Dennis
źródło
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.

AndyM
źródło
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 .

elektroniczna
źródło
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
Kiquenet
źródło
11

Prostym sposobem jest użycie programu PowerShell ISE , otwarcie skryptu, uruchomienie i wywołanie skryptu, funkcja ...

Wpisz opis zdjęcia tutaj

Jose Evaristo Cepeda Barrera
źródło
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.

rainabba
źródło
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

pkm
źródło
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ń.

Inżynier
źródło
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

solstinger
źródło