Profile – część piąta.
Poprzednie części:
Część 1: Co to jest profil, rodzaje profili
W części piątej cyklu o profilach skupię się na innych programach, które wspierają obsługę profili. Aby wsparcie rzeczywiście było możliwe (poza wspieraniem rzeczy od hosta w zasadzie niezależnych, jak ładowanie modułów, definiowanie funkcji, aliasów, zmiennych…) niezbędny jest dostęp do samej aplikacji z poziomu konsoli. Obecnie wiem o dwóch narzędziach (poza PowerShell ISE, o którym pisałem ostatnio), które taki dostęp dają: PowerGUI i PowerShell Plus.
PowerGUI i $pgse
Model obiektowy w PowerGUI jest dość silnie rozbudowany, w zasadzie obecnie nie odbiega zbytnio od tego, który istniał od jakiegoś czasu w ISE (jak wiadomo, ISE od momentu wypuszczenia PowerShella 2.0 nie uległo żadnym zmianom, cykl życia poszczególnych wersji PowerGUI jest zdecydowanie krótszy, był więc czas by „nadgonić”). To stało się podstawą do stworzenia modułu, który umożliwia tworzenie dodatków do obu edytorów (ISE i PowerGUI): SparkPlug. Jego autor, James Brundage, był też autorem jednego z pierwszych dodatków do PowerShell ISE (ISEPack), którego zresztą SparkPlug jest kontynuacją (wiele funcji pokrywa się z tymi, które były w ISEPacku).
Jest jednak rzecz, która konsolę PowerGUI odróżnia. Kolorki… 🙂 Konsola w PowerGUI umożliwia praktycznie dowolne konfigurowanie kolorystyki w oparciu o pełną gamę z przestrzeni nazw System.Drawing. Nic więc nie stoi na przeszkodzie by wyświetlić “tęczę”:
$Colors = $PGSE.Configuration.Colors.Console $Colors.ForegroundColor = 'Black' foreach ($color in [Enum]::GetNames([System.Drawing.KnownColor])) { $Colors.ForegroundColor = $color Write-Host $color }
Naturalnie, każdy z tych kolorów może być wykorzystany do tła/ tekstu w przypadku wystąpienia informacji error/ warning/ verbose/ debug, jak i „normalnych” informacji wyświetlanych w oknie konsoli wbudowanej w edytor skryptów. Profilem możemy się więc posłużyć zarówno do utworzenia „skrótu” do kolorków, jak i ustawienia kolorów w sposób nam odpowiadający. Przy okazji: pętla ta przydaje się do wygenerowania ściągi przed rozmową z ładniejszą połową świata na temat kolorów… 😉
Obiekt $pgse istnieje domyślnie w wersji PowerGUI 3.0, można go utworzyć w PowerGUI 2.4. Dla bezpieczeństwa (jeśli chcemy mieć pewność, że taki obiekt istnieje) możemy na samym początku profilu dodać:
try { if (!$PGSE) { $PGSE = [Quest.PowerGUI.SDK.ScriptEditorFactory]::CurrentInstance } # Some operations with $PGSE, such as colours setup. } catch { Write-Warning '$PGSE could not be created.' }
Wszystkie te zmiany najlepiej wprowadzić do profilu związanego z PowerShell.exe, który jest traktowany przez PowerGUI jak $profile.CurrentUserCurrentHost, choć host „nieco” się różni.
PowerShell Plus i $psplus
W wersji 4 PowerShellPlus pojawił się obiekt $psplus, który w następnych wersjach tego produktu ma urosnąć. W chwili obecnej jest dość skromny i nie daje zbyt dużej elastyczności:
<#PS [7] #> $psplus | Format-Custom class HostController { AutoAdjustSize = True AutoTriggerEnabled = True CursorSize = 100 FontFace = Consolas FontSize = 16 LastPipeResult = MiniMode = False Opacity = 1 PSCredential = PSVersion = (…) PublicName = psplus QuickEditMod }
W zasadzie przydatne opcje to czcionka (typ i wielkość), opcja MiniMode, przezroczystość, Quick Edit Mode. Nic naturalnie nie stoi na przeszkodzie, by z opcji tych skorzystać i jeśli używamy PowerShell Plus często – na pewno docenimy fakt, że przenosząc profil na inną maszynę, będziemy mogli dostosować te parametry do naszych potrzeb. Trudno jednak porównywać tę funkcjonalność z tym, co oferuje w tym zakresie PowerGUI i PowerShell ISE.