PowerShell 3: Nowe ISE, czyli nowa konsola.
Dziś rozpoczynamy naszą podróż po nowościach w PowerShellu 3. By całkowicie skupić się na tym, co oferuje sam PowerShell, a nie nowa wersja systemu (czy to serwerowego, czy też klienckiego) będziemy się przyglądać temu, co możemy z niego “wyciągnąć” na systemach starszych. Wszystko demonstrować będę na systemie Windows Server 2008.
Dlaczego zaczynam od ISE? Bo korzystając z tego narzędzia będzie nam o wiele łatwiej odkrywać inne nowości, które w PowerShellu się pojawiają. Więcej: łatwiej będzie nam korzystać z tego, co istniało już wcześniej, ale co umknęło nam uwadze. Jest bowiem PowerShell ISE doskonałym narzędziem do poznawania tego wszystkiego, co PowerShell jako taki ma nam do zaoferowania.
Przebudowany
Jeśli ktoś korzystał z ISE w poprzedniej wersji to z pewnością zauważy znaczne zmiany: Wcześniejsza wersja “witała” nas trzema panelami: skrypt, wejście, wyjście. W nowym ISE wejście i wyjście zostały połączone w jeden panel “konsoli”. Dzięki temu ISE nieco bardziej przypomina “tradycyjną” konsolę. Konsola skryptów jest domyślnie schowana, włączony jest za to jeden z nowych elementów: pionowy panel dodatków a w nim – dodatek “Commands”. To właśnie jeden z tych elementów, które ułatwiają poznawać całą platformę. Odnajdziemy tu wszystkie polecenia i moduły, które na bieżącym systemie są dla nas dostępne. Jeśli wybierzemy z listy polecenie, które znajduje się w module obecnie niedostępnym, to zostanie nam zaoferowane zaimportowanie odpowiedniego modułu. Gdy to zrobimy, będziemy widzieć wszystkie parametry komendy i będziemy mogli ją: uruchomić, skopiować (i później wkleić w dowolne miejsce) lub wpisać bezpośrednio do konsoli:
Podobny efekt uzyskamy w dowolnym momencie (zarówno w tradycyjnej konsoli, jak i w samym ISE) korzystając z polecenia Show-Command. Dodatkowo w ISE możemy skorzystać z kombinacji klawiszy CTRL+F1.
Trzeba wiedzieć, że panel “Commands” to tylko demonstracja tego, co w nowym ISE można uzyskać. Podobne rozszerzenia możemy zbudować sami (założenie: potrafimy skompilować odpowiedni kod w jednym z języków .NET). Oprócz panelu pionowego dostępny jest też panel poziomy, który niestety domyślnie jest pusty. Jednak daje to całkiem nowe możliwości programistom na rozbudowę PowerShell ISE.
Rozbudowany
Nowe ISE zostało wzbogacone w dodatek, który w nowoczesnych edytorach przeznaczonych do pisania kodu wydaje się czymś bardzo naturalnym (i co w rozwiązaniach firm trzecich funkcjonowało od “zawsze”) – Intellisense. Tu jednak nie jest on jedynie rozszerzeniem edytora, skorzystamy z niego również wtedy, gdy pracować będziemy w “konsoli”. Jest on zbudowany na istniejącym od zawsze “tabulatorze”, który również został w PowerShellu 3-cim rozbudowany. Domyślnie wywoływany jest automatycznie w trakcie pisania polecenia(możemy opcję tą wyłączyć). Jeśli zechcemy go wymusić później, to wykorzystamy do tego powszechnie stosowaną kombinację klawiszy – ctrl+space. Proponowane nam będą zarówno polecenia, parametry poleceń, ale również – atrybuty poleceń w przypadku, gdy ich lista jest zamknięta (gdy parametr jest typem wyliczeniowym, lub jest ograniczony przy pomocy zestawu właściwych wartości – ValidateSet). Świetnym tego przykładem jest Set-ExecutionPolicy. Widać również, że nawet jeśli parametr jest pozycyjny, to po wymuszeniu ctrl+space zostaną nam zaproponowane potencjalne
wartości. Oprócz tego mechanizm działa na zasadzie filtrowania listy w oparciu o wpisany ciąg znaków. Dzięki temu można czasem uniknąć wpisywania przedrostków. Widok też jest przez to mniej “zatłoczony” – wpisanie kilku znaczących liter ograniczy listę tylko do tych elementów, które będą pasować. Ostatnia istotna rzecz: tabulator (a co za tym idzie – Intellisense) może być rozszerzony tak, by nawet
dynamicznie zmieniające się parametry pojawiały się w formie “wybieralnej” listy. Jak to zrobić – postaram się opisać już wkrótce. Opcje “wbudowane” to między innymi klasy .NET (New-Object) i WMI (polecenia z modułu CIM), nazwy i identyfikatory procesów (*-Process)/ nazwy serwisów (*-Service)/ i nazwy modułów (*-Module). Wszystkie te rozszerzenia sprawiają, że jeśli chcemy skorzystać z konsoli PowerShell istnieją silne przesłanki, by użyć właśnie ISE. Wszystko to bowiem dostępne jest dla nas zarówno w opcji pisania skryptów, jak i codziennej pracy w ramach konsoli. A dlaczego warto w ISE zacząć pisać skrypty i co zmieniło się w tym zakresie? O tym w drugiej części cyklu.