Czemu PowerShell?

Pracownik działu IT to na ogół osoba latająca od zlecenia do zlecenia, gasząca pożary i usiłująca jakoś ogarnąć “to wszystko”. Czasu na naukę na ogół nie ma wcale. Sporadycznie uda się wymusić na szefostwie jakieś szkolenie “zewnętrzne”, a i w jego trakcie nierzadko nadal trzeba odbierać telefony, odpowiadać na maile, gasić w/w pożary w dodatku rękami osób o mniejszym doświadczeniu. Po co więc uczyć się kolejnej technologii, kolejnego języka skryptowego czy kolejnej “konsoli”? Cóż, na początku bywa trudno, ale wierzcie mi, zwraca się ta inwestycja bardzo szybko. Jeśli zamierzacie pracować w systemie Windows (zarówno w wersji klient jak i serwer) to raczej nie uda Wam się przed tym uciec. W dodatku coraz więcej technologii nie będących produktem MS też zaczyna wspierać PowerShella. Od dawna takie wsparcie funkcjonuje w VMWare, ostatnio doszły NetApp i Intel (wsparcie dla vPro). No tak, ale to tylko nadal brzmi jak kolejne marketingowe bla, bla, bla. Jesteśmy najlepsi, najwspanialsi i w ogóle pochylcie głowy przed kolejny dzieckiem Microsoftu. Problem w tym, że przed tym produktem nie trzeba głowy pochylać. Więcej – to zespół tworzący ten produkt pochyla się nad każdym z nas i pyta: co nam nie wyszło? I trudno oprzeć się wrażeniu, że każda odpowiedź jest solidnie rozważana. A efekt? Wymienię tylko te technologie, z którymi na co dzień pracuję by pokazać, jak bardzo PowerShell pomaga je ogarnąć. I wspomnę o konkretnych przypadkach, nie o wszystkim co można zrobić. Zawsze to łatwiej skupić się na konkretnym problemie, niż generalizować… 🙂

1. Pliki

Wsparcie do walki z niesfornymi plikami jest moim zdaniem przednie. Komenda, która oszczędziła mi ostatnio pisania kilku linijek w .cmd czy .vbs:

dir –recurse –force -filter *-id-* | Rename-Item –NewName { $_.Name –replace ‘-id’ }

W skrócie: chodziło o wycięcie z nazw setek plików ‘-id’. Struktura katalogów przyprawiała o ból głowy, więc w cmd pewnie w końcu bym poległ na jakimś pliku. W vbs pewnie byłoby łatwiej, ale tworzyć obiekt by sięgnąć do plików… Buee… 😉

2. AD

Sam PowerShell wsparcie ma, ale nie najlepsze. Od czego jednak są inne firmy: Quest wieki temu opublikował darmowe narzędzia do zarządzania AD z PowerShella. Jeśli chcesz używać go do zarządzania AD – szczerze polecam. Problem: globalna grupa z której trzeba usunąć wszystkich członków, których konta znajdują się w danym OU. Chirurgicznie, bez usuwania innych. Oryginalny pomysł? Ldifde. Mój pomysł? Jedna linia w PowerShell:

Get-QADUser -SearchRoot $OU | Where-Object { @($_.MemberOf) -contains $Group } | Remove-QADGroupMember -Identity $Group -WhatIf

$OU i $Group to zmienne, w których miałem odpowiednio OU, którego zawartość mnie interesowała (oczywiście bez wnikania w strukturę wewnątrz tego OU). $Group to DN grupy. Do tego –WhatIf by najpierw sprawdzić co się stanie… 😉

3. WMI

Istnieje już tyle lat, a praktycznie mało który administrator go używa. Poza naturalnie tymi, którzy potrafią posłużyć się VBS, albo napisać program w C (ale to już quasi-programista 😉 ). Ale tam by w ogóle dobrać się do WMI trzeba kilku linii. By połączyć się z kilkoma komputerami – całą procedurę trzeba zamknąć w suba lub funkcję i ponowić dla każdego z nich. A później jeszcze masa linii by dane wyświetlić. PowerShell?

Get-WmiObject –ComputerName PC1, PC2, PC3 –Class Win32_Bios | select __Server, SerialNumber | Export-Csv –NoType Plik.csv

I już, mam informację o nr seryjnych PC1, PC2, PC3 w .csv, który otwieram sobie w Excelku i dalej działam już tam. Ale to nie wszystko – PowerShell pozwoliłby mi stosunkowo łatwo zmienić __SERVER na coś ładniejszego. Powiązać dane z kilku klas WMI też się da. A WMI to nieskończona kopalnia informacji o komputerze, który używamy i które używają nasi użytkownicy. Wszystko w naszym zasięgu… 🙂 A WMI to jeszcze metody, zdarzenia… Naprawdę, niewiele rzeczy na komputerze z Windows nie da się zrobić przy pomocy WMI. A teraz ta technologia jest na wyciągnięcie ręki. 🙂

Małe podsumowanie

Zamykając ten wpis chciałbym wspomnieć, że to wszystko to tylko skrobanie po powierzchni tego, co PowerShell ma nam do zaoferowania. Z silną wspólnotą zbudowaną wokół, z masą ludzi, którzy na żadne pytanie nie odpowiadają odruchowo “spytaj Google”, niemal wszystko jest możliwe. Jeśli sami macie problem z rozwiązaniem problemu – sięgnijcie do tego, co już stworzono i dostosujcie do swoich potrzeb. Możliwości są nieograniczone…

~ - autor: Bartek Bielawski w dniu Styczeń 16, 2011.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

 
%d blogerów lubi to: