Nie wiem sam, czemu to tak szybko... Bardzo dziękuję wszystkim, którzy zdecydowali się na posłuchanie mojej sesji. Pustek na sali nie było i zapewniam Was, że nie ma dla prelegenta lepszej nagrody. Oceny i statystyki też się liczą, ale wypełniona sala ma dla mnie większą wartość.

Dziękuję również uczestnikom konkursu Speaker Idol. Mimo, że mój osobisty faworyt nie wygrał, to i tak oceniam, że cały konkurs warty był energii włożonej w pomoc przy organizacji, namawiania wahających się, zabiegania o promocję i chodzenia w zielonej koszulce. Byliście świetni a ja po fakcie mogę się przyznać, że zasiadanie w komisji Speaker Idol od zawsze było moim marzeniem.

No a teraz do rzeczy.

Pokazałem kilka prostych poleceń PowerShell i oceniam, że mimo luźnego związku z tematem sesji, warto je tu przytoczyć dla pamięci.

Poleceniem pierwszym było import-module ActiveDirectory. Proste w swojej postaci i pozwoliło nam skorzystać z rozszerzeń obsługujących AD, dzięki czemu możliwe było cd AD: Wewnątrz AD też można robić cd, ale pamiętajcie, że cd, to alias do Set-Location. Ścieżki, do których przechodzi się w AD podaje się zawsze po ich Distinguished Name.

Drugi cykl poleceń opierał się na Get-WMIObject win32_volume. Z kilku teoretycznych powodów, WMI nie jest najlepszym przykładem dla remotingu, ale czytelnie ilustruje całą ideę.

Żeby wykonać powyższe polecenie na zdalnym komputerze (u mnie nazywał się on W7ENT), należy użyć Issue-Command W7ENT {Get-WmiObject win32_volume}

Powyższe polecenie zwróciło wszystkie właściwości wszystkich wolumenów. Aby odfiltrować tylko te oparte na NTFS, skorzystałem z polecenia icm w7ent {Get-WmiObject win32_volume} | Where-Object {$_.filesystem -eq "ntfs"}
Polecenie icm jest wbudowanym w PowerShell aliasem do Issue-Command a w trakcie prezentacji szybciej się je wklepuje.

Ponieważ powyższe zapytanie zwróciło wiele ciekawej, ale w tym przypadku bezużytecznej informacji, odfiltrowałem tylko to, co mnie interesowało
icm W7ENT {Get-WmiObject win32_volume} | Where-Object {$_.filesystem -eq "ntfs"} | select name, freespace

Później dodałem jeszcze jeden filtr i dodatkowy komputer, otrzymując w końcu nieco tasiemcowe polecenie

icm DC01,W7ENT {Get-WmiObject win32_volume} | Where-Object {$_.filesystem -eq "ntfs"} | select systemname, name, freespace | where-object {$_.freespace -lt 100000000}

Na koniec pokazałem jeszcze prosty skrypt dostępny dzięki modułowi ServerManager

Import-Module ServerManager

Get-WindowsFeature

Z prostym filtrem:

Get-WindowsFeature | Where-Object {$_.Installed}

I dla porównania

Get-WindowsFeature | Where-Object {!$_.Installed}

Pamiętajcie proszę, że funkcjonalność zdalnego uruchamiania poleceń PowerShell wymaga włączenia. Domyślnie jest wyłączona. Polecenie winrm quickconfig (z commandline) powinno załatwić sprawę szybko i skutecznie.

I na koniec, powtórzę jedną sugestię i jedną prośbę. Obie pojawiły się na mojej sesji:

  1. Uczcie się PowerShella. To ma przyszłość.
  2. Oceńcie MTS i wszystkie sesje na http://www.mts2009.pl

Autor: Grzegorz Tworek [MVP]