Jak uruchomić skrypt Powershell i jak ustawić „execution policy”?

powershell_ikona_200..czyli pierwsza przygoda z Powershell’em:) Stali czytelnicy naszego Bloga zapewne wiedzą, że dość często dzielimy się ciekawymi skryptami Powershell (zobacz listę) i osoby korzystające z tego genialnego narzędzia powinni być usatysfakcjonowani. W trosce o początkujących, trzeba jednak wrócić do pewnych podstaw. W ramach wprowadzenia, pisaliśmy o instalacji PS 3.0 i sprawdzaniu wersji – teraz należałoby powiedzieć kilka słów o tym jak się uruchamia skrypty.

 

 

Edycja skryptów Powershell

Do edycji skryptów Powershell wystarczy zwykły edytor tekstowy jak Windowsowy Notatnik, ale osobiście polecam Wam Notepad++ (koloruje składnię), lub jeszcze lepiej: Powershell ISE, który instaluje się wraz z Powershell 3.0 i podpowiada składnię. Powershell ISE
Nieco więcej o edycji skryptów Powershell, w tym o ciekawym narzędziu PowerGui pisał Piotr w „szkole skryptowania

 

Uruchamianie skryptów Powershell

Skrypty Powershell zapisujemy w pliku tekstowym z rozszerzeniem .ps1. Możemy je uruchamiać w konsoli Powershell:

PS C:\users\Administrator d:\skrypty\pierwszy_skrypt.ps1

Pamiętajmy, aby podawać pełną ścieżkę, gdyż pojawi się błąd:

The term pierwszy_skrypt.ps1′ is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again. At line:1 char:3 + pierwszy_skrypt.ps1

Jesli skrypt znajduje się w bieżącym folderze, uruchamiamy go w formie „.\pierwszy_skrypt.ps1”:

PS D:\skrypty\ .\pierwszy_skrypt.ps1

Skrypty Powershell możemy też uruchamiać w Wierszu Poleceń (CMD) i plikach wsadowych:

powershell d:\skrypty\pierwszy_skrypt.ps1

 

Powershell Execution Policy

Podczas pierwszego uruchomienia, nasz entuzjazm może ostudzić złowieszczy komunikat:

„File d:\skrypty\pierwszy_skrypt.ps1 cannot be loaded. The file D:\skrypt.ps1 is not digitally signed. The script will not execute on the system. Please see „get-help about_signing” for more details.”

W Windowsie istnieje polityka, która determinuje jaki rodzaj skryptów PS jest dozwolony Do sprawdzenia bieżącego ustawienia służy polecenie

Get-ExecutionPolicy

..które zwróci nam jedną z 4 wartości:

Restricted – domyślna i najbardziej restrykcyjna polityka, która nie pozwala uruchamiać żadnych skryptów, ale pozwala korzystać z konsoli PS w trybie interaktywnym. AllSigned – pozwala uruchamiać wyłącznie skrypty podpisane cyfrowo przez zaufanego wydawcę – dotyczy również skryptów,które napisaliśmy sami.
RemoteSigned – skrypty pobrane z internetu muszą być podpisane przez zaufanego wydawcę, a tworzone przez nas będą uruchamiały się normalnie.
Unrestricted – pozwala uruchamiać wszystkie skrypty Powershell Polecam zmienić politykę Restricted na RemoteSigned:

Set-ExecutionPolicy RemoteSigned

Polecenie to trzeba wykonać na koncie z prawami administratora. Zmiana polityki zostanie zapamiętana, więc nie ma potrzeby modyfikowania jej za każdym razem. Teraz możemy cieszyć się dobrodziejstwami Powershella’a tworząc sobie rozmaite skrypty. Jeśli macie jakieś uwagi lub chcecie się podzielić swoimi doświadczeniami – komentujcie 🙂

Łukasz Skalikow

Obecnie Manager IT. Przez lata byłem Inżynierem systemów. Jestem entuzjastą i specem od vSphere, Windows serwer, GPO. Od zawsze byłem zwolennikiem wiersza poleceń i automatyzacji. Obecnie, ze względu na pracę, rodzinę i wyjazdy służbowe, dużo mniej udzielam się na blogu, ale mam nadzieję, że pośród kilkuset porad opublikowanych na spece.it, wiele osób znajdzie dla siebie coś przydatnego :)

Przeczytaj także...

2 komentarze

  1. Marcin napisał(a):

    witam chciałbym uruchomić skrypt powerschellla o takiej treści
    Get-AppxPackage *windowsstore* | Remove-AppxPackage

    z konsoli cmd.exe
    chciałbym wpisać odpowiednią komendę w cmd i żeby uruchomił się skrypt z tym poleceniem i zrobił swoje czy jest to możliwe a jeżęli tak to prosił bym o pomoc w tej komendzie a jeszcze dokłądnie sjrypt będzie w lokalizacji E pendrive

  2. Marcin napisał(a):

    witam posiadam skrypt powershell który zawiera po polecenie usunięcia aplikacji
    chciałbym go uruchomić z konsoli cmd czy jest na to sposób ?

Dodaj komentarz