Centrum skryptów - Systemy operacyjne     Przegląd skryptów w Windows PowerShell 2.0 (część 2)

Przegląd skryptów w Windows PowerShell 2.0 (część 1)

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Przegląd skryptów w Windows PowerShell 2.0 (część 1)

(Uwaga: dzisiejszy artykuł z serii „Cześć, Skrypciarze” to przeredagowany fragment książki autorstwa Dona Jonesa i Jefferya Hicksa, która zostanie wkrótce wydana przez SAPIEN Press. Don wydał ponad 30 książek na tematy związane z IT. Publikuje też w czasopiśmie TechNet Magazine oraz w witrynach ScriptingAnswers.com i concentratedtech.com. Jeffery jest autorem lub współautorem kilku książek wydanych w serii SAPIEN TFM. Jest specjalistą MVP w zakresie Windows PowerShell, publikuje w witrynie Redmondmag.com i prowadzi stałą rubrykę w witrynie MCPMag.com. Więcej informacji o Jefferyu można uzyskać na stronie http://jdhitsolutions.com/blog (j.ang.). Dzięki, Don i Jeffery!)

----------

W przypadku wielu powłok — szczególnie niektórych typu *nix — obsługa interaktywna różni się bardzo od obsługi przy użyciu skryptów. Zazwyczaj powłoki udostępniają pełen język skryptów, dostępny jedynie dzięki skryptom. W przypadku Windows PowerShell jest inaczej: powłoka zachowuje się dokładnie tak samo i udostępnia dokładnie taką samą funkcjonalność zarówno w razie korzystania ze skryptów, jak i obsługi interaktywnej. Skrypty Windows PowerShell są po prostu przedstawioną w formie tekstowej listą czynności, które można by wykonać interaktywnie. Jedyny powód pisania skryptu to zatem zaoszczędzenie sobie pracy — wielokrotnego, ręcznego wykonywania działań w sposób interaktywny. Skrypt pozwala wykonywać je dowolną liczbę razy przy minimalnym wysiłku.

Pliki skryptów

Pliki z rozszerzeniem ps1 są rozpoznawane jako skrypty Windows PowerShell. Zwróćcie uwagę na cyfrę „1”. Wskazuje ona skrypt przeznaczony do Windows PowerShell v. 1; przyszłe wersje Windows PowerShell będą prawdopodobnie wykorzystywać ją jako informację o wstecznej kompatybilności. Pliki skryptów to proste pliki tekstowe. Można je edytować przy użyciu Notatnika lub dowolnego innego edytora tekstu. Domyślnie system Windows kojarzy pliki z rozszerzeniem ps1 z Notatnikiem, a nie z Windows PowerShell, więc dwukrotne kliknięcie pliku skryptu powoduje jego otwarcie w Notatniku, a nie wykonanie w Windows PowerShell. Mamy rzecz jasna pewne wątpliwości wobec używania Notatnika jako edytora skryptów: ten program z pewnością nie został zaprojektowany w tym celu i istnieją lepsze opcje. Bardzo cenimy sobie program SAPIEN PrimalScript (www.primalscript.com), ponieważ zapewnia on pełne środowisko wizualne z obsługą Windows PowerShell, umożliwiając np. zapisywanie skryptów Windows PowerShell w formie samodzielnych plików wykonywalnych, działających z innym niż domyślny poziomem uprawnień.

Warto zwrócić uwagę, że w Windows PowerShell 2.0 również używane są pliki z rozszerzeniem ps1. Oznacza to, że jedynka odnosi się nie tyle do wersji powłoki, co do wersji formatu skryptów. PowerShell 2.0 nie powinien mieć problemów z uruchamianiem większości skryptów z wersji 1.0 bez żadnych zmian.

Profile

Windows PowerShell obsługuje cztery specjalne skrypty, zwane profilami. Pod względem fizycznym niczym się one nie różnią od innych skryptów. Ich wyjątkowość polega na tym, że Windows PowerShell po uruchomieniu wyszukuje je i uruchamia, jeśli zostaną one znalezione. Są one zatem czymś w rodzaju skryptów „autouruchamiania” i umożliwiają zdefiniowanie niestandardowych aliasów, funkcji itp. Można np. zdefiniować niestandardowe aliasy, które będą uwzględniane po każdym uruchomieniu Windows PowerShell. Dzięki temu będą one dostępne zawsze, gdy chcemy skorzystać z powłoki.

Windows PowerShell wyszukuje profile, sprawdzając określoną ścieżkę i nazwę pliku. Wyszukiwanie i ewentualne uruchamianie odbywa się w następującej kolejności:

  • %windir%\system32\WindowsPowerShell\v1.0\profile.ps1
    Ten skrypt dotyczy wszystkich użytkowników i powłok.
  • %windir\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
    Ten skrypt dotyczy wszystkich użytkowników, ale tylko powłoki PowerShell.exe.
  • %UserDocuments%\WindowsPowerShell\profile.ps1
    Ten skrypt dotyczy bieżącego użytkownika i wszystkich powłok.
  • %UserDocuments%\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
    Ten skrypt dotyczy bieżącego użytkownika i tylko powłoki PowerShell.exe.
Nawiasem mówiąc...
%UserDocuments% to nie jest poprawna zmienna środowiskowa. Używamy jej jako symbolu zastępczego dla folderu Dokumenty danego użytkownika. W systemie Windows XP byłaby to ścieżka %UserProfile%\My Documents; w systemie Windows Vista — %UserProfile%\Documents.

Zwróćmy uwagę na odniesienie do „wszystkich powłok”. Pracujemy główne z powłoką PowerShell.exe. Istnieją jednak i inne powłoki, np. powłoka Exchange Management Shell (stanowiąca część programu Exchange Server 2007). Chcąc zdefiniować coś we wszystkich powłokach — jak np. niestandardowe aliasy — umieścimy odpowiednie instrukcje w którymś z profili obejmujących wszystkie powłoki.

Uwaga dotycząca powłok
Warto pamiętać, że używanie powłok niestandardowych nie jest konieczne. Nie trzeba np. używać powłoki Exchange Management Shell, aby zarządzać programem Exchange Server 2007. Zamiast tego można dodać przystawkę programu Exchange do powłoki PowerShell.exe, używając apletu polecenia Add-PSSnapIn. W ten sposób uzyskamy dostęp do wszystkich apletów polecenia Exchange z powłoki PowerShell.exe. Ta sztuczka pozwala utworzyć środowisko powłoki zawierającej wszystkie aplety poleceń potrzebne do zarządzania wszystkimi programami, którymi można zarządzać przy użyciu Windows PowerShell.

Domyślnie nie są tworzone żadne pliki profili. Należy także pamiętać, że ponieważ są to skrypty w języku Windows PowerShell, nie zostaną one uruchomione, jeśli będą niezgodne z ustawionymi zasadami uruchamiania skryptów. Innymi słowy, profile powinny być podpisane, jeśli ustawiona jest zasada wykonywania AllSigned.

 Do początku strony Do początku strony

Centrum skryptów - Systemy operacyjne     Przegląd skryptów w Windows PowerShell 2.0 (część 2)