Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Windows 8 - PowerShell (część 1)

Wstęp

PowerShell - dla jednych zmora nowszych Windowsów, dla drugich rozwiązanie, na które czekali latami. Odpowiedź na zarzuty, że systemy operacyjne ze stajni Microsoft są tylko "klikane", nastawione na pewne ścieżki postępowania a wbudowane intepretery poleceń (commad.com, czy cmd.exe) ograniczone do minimum. Jest to niestety faktem: w przypadku użytkownika domowego nie jest to szczególnym utrudnieniem, jednak administratorzy serwerów mający pewne rutynowe czynności, czy skomplikowane zmiany dotyczące np. tysięcy użytkowników w Active Directory brak elastycznego rozwiązania był zawsze utrudnieniem. Operacje te są możliwe za pomocą różnych trików, jak korzystanie z wbudowanego prostego intepretera (obecnie cmd.exe), protez basha dla Windows, czy skryptów VBA.

Co to jest PowerShell

W roku 1996 Microsoft wydał MSH: pierwszą wersję rozbudowanego command.com pod nazwą kojarzącą się z Linuksowym sh.
Idea była zacna:


  • dać użytkownikowi rozbudowany intepreter poleceń,
  • dać użytkownikowi możliwość wykonania wszystkich czynności (i więcej...) za pomocą linii poleceń (co w roku 2008 stało się standardem).

Najprościej za Wikipedią:

r   e   k   l   a   m   a
PowerShell jest zintegrowany z .NET Framework i dostarcza środowisko do wykonywania zadań administracyjnych wykonywanych poleceniami cmdlets.

.

Co jest takiego potęgą i co czyni go niezbędnym obecnie narzędziem administratora Windows według praktykującego "wyznawcy" PS?:


  • możliwość wykorzystania obiektów .NET,
  • potoki,
  • formatowanie wyjścia,
  • tranakcje,
  • debugowanie skryptów,
  • grid z możliwością sortowania (skrypt "wyrzuca" wyniki w osobnych oknach),
  • przechwytywanie wyjątków,
  • wszelkie "dobprocie" rozbudowanych intepreterów, jak pętle foreach,
  • działa w starszych wersjach Windows, łącznie z WindowsXP (SP2).

Możliwości jest oczywiście dużo więcej - dla mnie, osoby wychowanej na systemach Unix PowerShell tchnął nowe życie w produkty Microsoft. Od wprowadzenia tego intepretera mogę korzystać ze starych nawyków, wykorzystania metod i właściwości zwróconego obiektu. Świetnym przykładem (via Wikipedia) jest polecenie Get-Childitem (znany użytkownikom jako dir ), zwracające listę plików i katalogów (z bierzącej lokalizacji):

Z otrzymanej przez Get-ChildItem | Get-Member listy, widać jednak, że można łatwo zastosować metodę Delete, bądź sięgnąć do właściwości LastAccessTime czy Attributes.

Ortodoksyjny Linuksowiec westchnie złośliwie:

wooow, w Windowsie też można? W *nix od zawsze

.

Są też wady, nikt nie twierdził, że w życiu będzie łatwo: w skryptach trzeba sporo korzystać z WMI, co jest powoli poprawiane.
Administrator Windows musi znać podstawy PS. To tak, jakby zaawansowany Linuksowiec na rozmowie kwalifikacyjnej zrobił wielkie oczy na dźwięk słów "sed", "awk", czy "grep".

PowerShell w Windows 8

Zobaczmy, jak prezentuje się PS w W8: aby uruchomić intepreter, należy wykonać w wierszu poleceń polecenie:

PowerShell

Dla wygodny można utworzyć sobie na pulpicie skróty do intepretera cmd.exe, lub bezpośrednio do PowerShell (o tym za chwilę).

Zobaczmy z jaką wersją PS jest dostarczany Windows 8:

$PSVersionTable

Jak widać, jest to PS w wersji 3.0 - posiada on dużo nowości, już w czasie testowania moich podstawowych skryptów (PS 2.) sporo z nich wymaga dostowania do 3.0. W przypadku prostych zmian (jak np. skrypty logowania i nowości przy mapowaniu dysków sieciowych (New-PSDrive i dodatkowy paramentr -Persist) w moim przypadku zadziałało dopiero:

New-PSDrive -Name Z -PSProvider FileSystem -Root \\SERVER\UZYSZKODNICY\$username -Persist

Mogą też być oczywiście inne powody takiego stanu rzeczy, jak np. "System error 2148073478," "extended error," or &q..., czy całkowite wyłącznie UAC.
Problem jest natomiast w przypadku rozbudowanych skryptów PS, lub setek firmowych maszyn (Windows XP, Vista, 7) mających "pod spodem" wersję 2.0 - sam projekt aktualizacji do 3.0 jest do przejścia, ale w przypadku korporacji może to trwać długimi miesiącami (procedury, procedury, procedury...).
Na szczęście Microsoft dostarcza w Win8 także wersję 2.0 - uruchomienie jest banalnie proste, należy dodać parametr dotyczący wersji:

PowerShell –Version 2

Dla wygody proponuję utworzyć sobie skrót na pulpicie:

Ja jeszcze dla wygody robię kopię takiego skrótu, nadając intepreterowi poleceń uprawnienia administratora - przy testach warto sprawdzić, jak się np. "zachowa" skrypt uruchomiony na koncie z ograniczonymi prawami:

Można oczywiście za każdym razem klikać skrót "Uruchom jako" - ale jak można sobie ułatwić życie, to czemu tego nie robić?
Od strony GPO (dla np. setek stacji roboczych w AD) można to wymusić np. za pomocą tego rozwiązania.

Przykład użycia:

  • cmdlet uruchomiony bez uprawnień administratora:
  • z uprawnienami administratora:
  • Zobaczmy teraz (z poziomu PS), jakie komponenty dostarcza nam Microsoft w Windows 8, wykorzystając wcześniej poznany cmdlet Get-WindowsOptionalFeature :

    Get-WindowsOptionalFeature -Online | where state -eq enabled | ft –a

    "NetFx3" (.NET 3.5 ?) dodałem najprawdopodobniej ja, instalując Logmein (wymagany komponent).

    Jak widać na prostym przykładzie: PS to przecudna "piaskownica" dla geeka:


    • Get-WindowsOptionalFeature -Online (wyszukaj komponenty będące "Online")
    • | .... gdzie stan jest równy "uruchomiony" (potok "filtrujący")
    • | ... formatuj tabelę (Format-Table)

    Podsumowanie

    Nie chcę się powtarzać, ale z mojego punktu widzenia z PowerShell to krok milowy w produktach Microsoft. Już teraz dużo czynności administracyjnych wymaga znajomości PS. W przypadku np. Exchange (w tym Office365) niektórych czynności nie ma możliwości wykonać bez tego interpretera poleceń! Pewnego dnia "opiekun systemu" będzie zmuszony bezrozumnie przeklejać z google wyszukane gotowe skrypty mając nadzieję, że nie zawierają one np. poleceń usunięcia dysków logicznych.

    ----------------------------------------------------
    [ źródla i dodatkowe linki do poczytania ]
    ----------------------------------------------------
    http://pl.wikipedia.org/wiki/Windows_PowerShell
    http://ss64.com/ps/ - komendy PowerShell 2.0
    technet.microsoft.com - Windows PowerShell Owner's Manual
    http://www.gfi.com - źródło obrazka "PowerShell" 

    windows oprogramowanie porady

    Komentarze