Windows Terminal: skrypt w profilu

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

Obrazek posiada pusty atrybut alt; plik o nazwie Kod-QR.png