W jaki sposób uruchomić skrypt w profilu Windows Terminal? Jak uruchomić polecenie wraz z wybranym profilem Windows Terminal? Jak umieścić skrypt przy starcie profilu w aplikacji Windows Terminal? W jaki sposób nawiązać zdalne połączenie poprzez wywołanie profilu Windows Terminal?
Zacznijmy od koncepcji profili w Windows Terminal. Profil w tej aplikacji jest zestawem ustawień konfiguracyjnych i obejmuje on definicje używanej powłoki, nazwę zakładki, tryb jej uruchamiania oraz innych ustawień. Profile są zapisywane w pliku konfiguracyjnym Windows Terminal (w formacie JSON). Samych ustwień zawartych w pliku jest bardzo dużo (z każda wersją Windows Terminal się zwiększa), pozwalają one na:
- definiowanie różnych profili sesji (np. dla PowerShell, WSL, CMD itp.)
- ustawienia kolorów, stylów, czcionek i tła dla każdego profilu
- ustawienia skrótów klawiszowych
- ine elementy wizualne i funkcjonalne samego Windows Terminal
A co gdyby ustawienia Windows Terminal pozwalały nam na uruchomienie własnego profilu (np z PowerShell 7) który wykona na starcie określony skrypt?
Zacznijmy od sprawdzenia naszych obecnych ustawień Windows Terminal:
w nowo otwartej zakładce ustawień, mamy oddzielne podmenu o nazwie Profile. Widzimy w nim wszystkie zdefniowane ich typy.
Wybierając konkretny z nich możemy wyedytować jego nazwę, ścieżke wiersza poleceń (powłokę), katalog startowy, ikonę, nazwę zakładki czy opcje uruchamiania profilu jako administrator:
Edytowane ustawienia zapisywane są w formacie JSON w pliku settings.json. Jego domyślna lokalizacja to:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
Samych ustawień które możemy zdefiniować jest znacznie więcej, zwłaszcza gdy zaczniemy edytować plik .json (GUI aplikacji posiada tylko podstawowe elementy). Do jego edycji możemy użyć Visual Studio Code a dzięki zastosowanemu w pliku schmatowi jego zmiana jest bardzo intuicyjna (funkcja składni, formatowania i autouzupełniania):
O ustawieniach Windows Terminal można pisać długo, my jednak chcemy aby uruchamiając określony profil wykonywał się określony skrypt.
Jaki to skrypt? W naszym przykładzie skrypt będzie pobierał poświadczenia użytkownika zapisane w SecretManagement Module* następnie z ich użyciem zestawi połączenie interaktywne ze zdalnym komputerem w oparciu o polecenie Enter-PSSession (WinRM).
* w skrócie SecretManagement Modul tworzy skarbiec (odblokowywany hasłem) w którym przechowujemy sekrety (np poświadczenia) – pisałem o tym tutaj.
Oczywiście możemy wywołać nasz skrypt w postaci pliku .ps1 będąc już w samej sesji konsoli, my jednak chcemy aby odbywało się to automatycznie po uruchomieniu określonego profilu.
Sam skrypt wygląda następująco:
#odblokowanie magazynu o określonej nazwie
Unlock-SecretVault UserSecretStore
#przypisanie do zmiennej sekretu zawierającego poświadczenia zapisane w magazynie
$cred = Get-Secret -Name "sprawdzone.it"
#wskaznaie nazwy zdalnego computera i przypisanie jej do zmiennej
$computer = Read-Host -Prompt "Computer name: "
#nawiazanie sesji zdalnej z uzyciem zmiennych
Enter-PSSession -ComputerName $computer -Credential $cred;
Reasumując mamy gotowy i działający skrypt, chcemy go urchamić wraz z profilem Windows Terminal.
W tym celu dodajemy nowy profil w Windows Terminal, uruchamiamy aplikacje, przechodzimy do ustawień, klikamy dodaj nowy profil, wskazujemy istniejący już w aplikacji (w naszym wypadku PowerShell 7), powielamy go i zapisujemy:
następnie zmieniamy jego nazwę w naszym wypadku sprawdzone.it :
oprócz nazwy najbardziej interesować nas będzie jednak ustawienie dotyczące wiersza poleceń profilu, to w tym miejscu wskażemy który skrypt chcemy uruchomić, domyślnie wygląda tak:
aby uruchamiać skrypt na starcie profilu ścieżka powinna zawierać okręslone parametry (-NoProfile – NoExit -Command) i wyglądać następująco:
C:\Program Files\PowerShell\7\pwsh.exe -NoProfile -NoExit -Command "c:\data\scripts\profile.ps1"
zapisujemy nasz profil (opcjonalnie możemy jeszcze zmienić nazwę naszej zakładki oraz uruchamiać go jako administrator):
Mamy gotowy nowy profil, sprawdźmy jak działa nasze rozwiązanie.
Uruchamiamy Windows Terminal wskazując zdefiniowany nasz profil:
pojawi się okno terminala z uruchomionym naszym profilem zawierającym skrypt, skrypt w pierwszej kolejności zapyta nas o hasło do naszego skarbca:
następnie drugą zmienną był komputer z którym chcemy nawiązać sesje:
efektem podania tych dwóch wartości będzie poprawne nawiązanie połączenia zdalnego:
tak wygląda sprawdzone rozwiązanie dotyczące dodawania skryptu do profilu w Windows Terminal.
Pamiętajcie, że to dopiero początek, w swoim skrypcie możecie definiować funkcje, aliasy czy importować moduły. Tak przygotowany plik może znacznie ułatwić nawiązywanie połączeń ale także wykonywać określone zadania. Możliwości jak zawsze w przypadku PowerShell’a są nieograniczone a dzięki profilom Windows Terminal codzienne czynności administracyjne jeszcze szybsze.
Jeżeli mój wpis Ci się spodobał, pomógł w pracy? Chcesz mnie wspierać? Postaw kawę! To dzięki waszemu wsparciu nie ma reklam! Poniżej kod QR do płatności który jest jednocześnie linkiem do PayPal możesz też wpłacić BLIK