Tak się dalej bawię nowym Powershellem i dokonuję kolejnych odkryć. W nocy wspomniałem, że Windows Powershell v2.0 posiada edytor graficzny. Jego status jest grubo in-dev, aczkolwiek jak sobie przeczytałem dokładnie Release Notes to się okazuje, że aby go uruchomić należy mieć zainstalowany .NET Framework 3.0.

Co to oznacza? Jak dla mnie na 99,9% oznacza to, że ta aplikacja ma intefrejs graficzny zdefiniowany w Xaml'u. Przeglądając Release Notes odkryłem jedno z nowych poleceń, które nazywa się out-gridview. Co ten cmdlet robi? Otóż wysyła wynik przekazany mu jako zmienna lub przez strumień do osobnego okienka, które zawiera ładną tabelkę.

Aby to polecenie zadziałało również wymagany jest .NET Framework 3.0 - czyli Xaml ponownie. Fajnie, że w podstawowym Powershellu pojawiają się wyjścia danych do zewnętrznych interfejsów. Do tej pory realizowało to komercyjne Powertools do Powershella. Tam można dane wysyłać w postaci wykresów do gadżetów Sidebara.

Nie testowałem osobiście Powertools, ale wydaje mi się logiczne, że te gadżety powinny zostawać gdy zamknę okno shell'a. W przypadku powyższego grid'a okienko jest przypięte do procesu powershella, który go wykonał. Zatem po zamknięciu okienka grid także znika.

Tak czy siak miłe urozmaicenie. Dla przykładu, wykonanie polecenia

get-process | out-gridview lub out-gridview -inputobject @(get-process)

da poniższy efekt:

image 

Z dodatkowych cech powyższego grida, potrafi on wykonać proste grupowania. Jest to kapitalnie opisane między innymi na blogu autorów tego środowiska.

Z dodatkowych ciekawych rzeczy, którymi się wczoraj bawiłem.
Jakiś czas temu opublikowałem na swoim blogu parę prostych skryptów powershell'a raczej na zachętę, abyście sami także pobawili się środowiskiem.

Ja swoje skrypty trzymam w jednym folderze (powiedzmy C:\BIN\), do którego wrzuciłem sobie wszystkie *.ps1 jak i mnóstwo innych prostych commandline'owych narzędzi (jak od Sysinternals i pochodne). Dodałem sobie ścieżkę do tego foldera tak, aby chociażby mój powershell nie zgadywał gdzie ich szukać i co teraz. Powiedzmy, że te dwa przykładowe polecenia, które stworzyłem jak "start-dotnet" oraz "get-foldersize" chciałbym komuś podarować.

Chciałbym też, aby taki nowy użytkownik nie zgadywał w skrypcie (który może być długi) jakie są wszystkie cechy mojego dzieła, lecz chciałbym dac mu zintegrowany help do mojego skryptu.

Jak coś takiego zrobić?
Szybki test w poniższej postaci szybko ujawnia, że Powershell v2 siedzi w folderze v1

PS C:\> write-host $pshome
C:\Windows\system32\WindowsPowerShell\v1.0\

W tym folderze poza samym powershellem i jego plikami konfiguracyjnymi znajdziemy przynajmniej jeden folder z kodem lokalizacyjnym (np. en-US).
W tym folderze są dokumentacje oraz plików *.help.txt, które zawierają pomoc wyświetlaną za pomocą poleceń help, get-help czy aliasu man w Powershellu.

Dodanie tam jakiegokolwiek pliku z powyższym rozszerzeniem spowoduje, że get-help już zrozumie dodatkowe hasło z podstawy nazwy naszego pliku.

Stworzyłem sobie zatem pliczek start-dotnet.help.txt i wrzuciłem tam i co dalej?

image

Jak widać zrobiłem mały rozgarbiasz. W folderze en-US dodałem polski help.

To powoduje dwa wnioski. Po pierwsze, Powershell napisany w .NET Framework wspiera Unicode. Zatem kiedy nasz plik zapiszemy w standardzie Unicode to polskie znaki nie zginą i zostaną poprawnie wyświetlone. (Zapis w Ansi spowoduje pojawienie się znaków zapytania zamiast polskich znaków).

Drugi wniosek, może warto by było pomyśleć o osobnym folderze pl-PL z pełna lokalizacją wszystkich standardowych i dodatkowych poleceń?

Powershell v1.0 posiada MUI pack z lokalizacjami dla dodatkowych języków. Niestety nawiązując chociażby do tego odnośnika, polskiej wersji nie ma.
Najbliżej geograficznie jest rosyjska cyrilica i niemiecki.

Lipa. Stworzyłem folder pl-PL i wrzuciłem tam kopię wszystkich plików help.txt i niestety nie zadziałało, powalczę jeszcze trochę i zobaczymy czy coś mi się uda wydumać. :)

Podsumowując dalsze zabawy z Powershell, z główniejszych nowych cech jeszcze jest oczywiście Remoting oraz wykonywanie zadań w tle.

Dla zainteresowanych na zakończenie przypominam, że w przypadku gdy już macie Powershell v1.0 to należy go odinstalować przed instalacją wersji v2.0. Pamiętajcie, że Powershell 1.0 pod Windows Vista przynajmniej instaluje się jako aktualizacja systemu (KB) więc nie znajdziecie go w liście zainstalowanych aplikacji.

Anyway, bylibyście zainteresowani pełną polską lokalizacją dla Powershell'a? (Ten temat mnie nurtuje, cyrilica jest, a pobruszać po polskiemu nie można ..eh).