Windows Terminal

Microsoft 365 -hallinnan helpottaminen PowerShell-profiilein

Windows Terminal on Microsoftin uusin terminaalisovellus, joka mahdollistaa useiden eri shellien ja komentorivityökalujen käytön yhden ohjelman kautta. Se tuo Windowsin natiiveihin komentorivi-ympäristöihin aiempaa enemmän kustomointia visuaalisuuden ja muiden toiminnollisuuksien osalta.

Asennus joko Microsoft Storesta tai GitHubista.

Yksi Windows Terminalin kätevimmistä ominaisuuksista on sen tuki useille välilehdille ja profiileille. Profiilit mahdollistavat ennaltamääritettyjen komentojen tai shellien avaamisen suoraan uudelle välilehdelle. Tässä kirjoituksessa näytän, miten olen itse hyödyntänyt Windows Terminalia Microsoft 365:n hallintaan PowerShellillä.

Kuvasta on havaittaittavissa, että jokainen Microsoft 365:n ydinpalvelu on lisätty Windows Terminaaliin omana profiilinaan. Yksittäisen profiilin valitseminen pudotusvalikosta yhdistää automaattisesti kyseiseen palveluun PowerShellillä. Tämä säästää aikaa, kun eri yhteyskomentoja ei tarvitse muistaa, saati kirjoittaa jatkuvasti. Näin pystyn helposti avaamaan useamman palveluyhteyden joko omiin välilehtiinsä tai rinnakkain samalle välilehdelle.

Windows Terminalin asetukset määritellään settings.json -tiedostossa. Tiedosto löytyy oletuksena hakemistosta C:\Users\%username%\Local\Packages\Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe\LocalState. Paketin nimi vaihtelee riippuen, onko asennettuna Preview-versio Windows Terminalista vai ei. Asetustiedoston saa myös auki suoraan graafisen käyttöliittymän kautta valitsemalla pudotusvalikosta ”Settings”. Tämän kirjoituksen esimerkissä käytetään Windows Terminalin Preview-versiota 1.5.3242.0.


Profiilien lisääminen Windows Terminaaliin

Windows Terminaalissa on valmiiksi lisättynä profiilit PowerShellille, Komentokehotteelle ja Azure Cloud Shellille. Halutessaan niihin ei tarvitse koskea, mutta itse olen mukauttanut muun muassa niiden aloitushakemistot ja visuaalisuuden. Ennen yksittäisiä profiiliasetuksia olen määrittänyt oletusasetukset, jotka vaikuttavat kaikkiin profiileihin:

// PROFILE SETTINGS:

"profiles":
{
"defaults":
{
// These settings apply to all profiles
"fontFace": "Consolas",
"fontSize": 12,
"fontWeight": "normal",
"padding": 20,
"antialiasingMode": "grayscale",
"cursorShape": "filledBox",
"closeOnExit": "graceful"
},

Heti oletusasetusten jälkeen tulee listattuna kaikki profiilini. Ensimmäisenä Windows Terminalin valmiiksi luomat kolme profiilia:

"list":
[
{
// PowerShell profile (Default)
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"name": "Windows PowerShell",
"commandline": "powershell.exe",
"startingDirectory": "C:\\PowerShell\\",
"colorScheme" : "PSColorScheme",
"useAcrylic" : true,
"acrylicOpacity" : 0.6,
"hidden": false
},
{
// Command Prompt profile
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
"name": "Command Prompt",
"commandline": "cmd.exe",
"startingDirectory": "C:\\CMD\\",
"colorScheme" : "CMDColorScheme",
"useAcrylic" : true,
"acrylicOpacity" : 0.6,
"hidden": false
},
{
// Default Azure Cloud Shell
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
"name": "Azure Cloud Shell",
"source": "Windows.Terminal.Azure",
"startingDirectory": "C:\\PowerShell\\",
"colorScheme" : "AzureCloudShellColorScheme",
"useAcrylic" : true,
"acrylicOpacity" : 0.6,
"hidden": false
},

Valmiiden profiilien jälkeen olen listannut omat profiilit. Olen luonut oman profiilin jokaista yleisesti tarvitsemaani Microsoft 365 -palvelua varten.

Azure Active Directory PowerShell for Graph (AzureAD):

{
// Azure Active Directory profile
"name": "Azure Active Directory",
"commandline": "powershell.exe -noexit -noprofile -command Connect-AzureAD",
"startingDirectory": "C:\\PowerShell\\Azure AD\\",
"icon": "C:\\PowerShell\\Azure AD\\Icon\\aad-icon.png",
"colorScheme" : "AADColorScheme",
"useAcrylic" : true,
"acrylicOpacity" : 0.6,
"hidden": false
},

"commandline" on se oleellinen rivi, johon käyttämieni profiilien toiminta perustuu. Käytännössä Azure Active Directoryn osalta profiilin valitseminen graafisen käyttöliittymän pudotusvalikosta johtaa vain kyseisellä rivillä määritetyn Connect-AzureAD -PowerShell-komennon ajamiseen.

Komennon toimivuus edellyttää toki, että AzureAD-moduli on asennettuna. Asennus järjestelmänvalvojana PowerShellissä:

Install-Module -Name AzureAD

Kaikki muut profiilit on lisätty vastaavalla idealla.

Microsoft Azure Active Directory Module for Windows PowerShell (MSOL):

{
// Microsoft 365 MSOL profile
"name": "Microsoft 365",
"commandline": "powershell.exe -noexit -noprofile -command Connect-MsolService",
"startingDirectory": "C:\\PowerShell\\Microsoft 365\\",
"icon": "C:\\PowerShell\\Microsoft 365\\Icon\\m365-icon.png",
"colorScheme" : "M365ColorScheme",
"useAcrylic" : true,
"acrylicOpacity" : 0.6,
"hidden": false
},

Edellyttää MSOnline-modulin asennuksen. Asennus järjestelmänvalvojana PowerShellissä:

Install-Module -Name MSOnline

Exchange Online PowerShell V2 Module:

{
// Exchange Online profile
"name": "Exchange Online",
"commandline": "powershell.exe -noexit -noprofile -command Connect-ExchangeOnline",
"startingDirectory": "C:\\PowerShell\\Exchange Online\\",
"icon": "C:\\PowerShell\\Exchange Online\\Icon\\exo-icon.png",
"colorScheme" : "EXOColorScheme",
"useAcrylic" : true,
"acrylicOpacity" : 0.6,
"hidden": false
},

Edellyttää Exchange Online PowerShell V2 -modulin asennuksen. Asennus järjestelmänvalvojana PowerShellissä:

Install-Module -Name ExchangeOnlineManagement

SharePoint Online Management Shell:

{
// SharePoint Online profile
"name": "SharePoint Online",
"commandline": "powershell.exe -noexit -noprofile -command Connect-SPOService",
"startingDirectory": "C:\\PowerShell\\SharePoint Online\\",
"icon": "C:\\PowerShell\\SharePoint Online\\Icon\\spo-icon.png",
"colorScheme" : "SPOColorScheme",
"useAcrylic" : true,
"acrylicOpacity" : 0.6,
"hidden": false
},

Edellyttää SharePoint Online Management Shell -modulin asennuksen. Asennus järjestelmänvalvojana PowerShellissä:

Install-Module -Name Microsoft.Online.SharePoint.PowerShell

Microsoft Teams PowerShell Module:

{
// Microsoft Teams profile
"name": "Microsoft Teams",
"commandline": "powershell.exe -noexit -noprofile -command Connect-MicrosoftTeams",
"startingDirectory": "C:\\PowerShell\\Teams\\",
"icon": "C:\\PowerShell\\Teams\\Icon\\teams-icon.png",
"colorScheme" : "TeamsColorScheme",
"useAcrylic" : true,
"acrylicOpacity" : 0.6,
"hidden": false
},

Edellyttää Microsoft Teams PowerShell  -modulin asennuksen. Asennus järjestelmänvalvojana PowerShellissä:

Install-Module -Name MicrosoftTeams

Uusin Microsoft Teams PowerShell -moduli sisältää myös Skype for Business Online Connectorin, eli Skypeä varten ei tarvitse luoda erillistä profiilia.


Väriteemat

Olin ylempänä sisällyttänyt jokaiseen profiiliin oman väriteeman colorScheme -rivillä. Väriteemoissa olen pääasiassa vain määritellyt kunkin profiilin taustavärin ja fonttivärin. Siten tunnistan jo suoraan terminaali-ikkunan taustaväristä, mitä palvelua olinkaan hallitsemassa kyseisellä hetkellä.

// COLOR SCHEMES:
"schemes": 
[
{
"name" : "AADColorScheme",
"background" : "#00bef2",
"foreground" : "#FFFFFF",
},
{
"name" : "M365ColorScheme",
"background" : "#eb3c00",
"foreground" : "#FFFFFF",
},
{
"name" : "EXOColorScheme",
"background" : "#2071b8",
"foreground" : "#ffffff",
},
{
"name" : "SPOColorScheme",
"background" : "#006b6d",
"foreground" : "#FFFFFF",
},
{
"name" : "TeamsColorScheme",
"background" : "#525abf",
"foreground" : "#FFFFFF",
}
],

Alla esimerkki yhdestä välilehdestä, jossa on samanaikaisesti auki yhteys jokaiseen Microsoft 365:n ydinkomponenttiin sekä tavallinen PowerShell-ikkuna. Kunkin paneelin taustaväristä ja oletushakemistosta voi jo arvata, mihin ne ovat yhdistäneenä.

Väriteemoja voi halutessaan kustomoida laajemminkin: https://docs.microsoft.com/en-us/windows/terminal/customize-settings/color-schemes


Windows Terminal mahdollistaa profiilien ohella laajempaakin kustomointia esimerkiksi käynnistysasetusten ja pikanäppäinten osalta. Keskityin kuitenkin tässä kirjoituksessa ainoastaan uusien profiilien lisäämiseen, joista jokainen tukee nativisti myös monivaiheista tunnistautumista (MFA). Lopputuloksena on hieman aikaa säästävä tapa hallita Microsoft 365 -tenanttia PowerShellillä, joka on toiminut omassa käytössäni hyvin jo useita kuukausia.

Käyttämäni settings.json-tiedosto on katseltavissa kokonaisuudessaan tästä linkistä (tallennettu txt-tiedostona sisällönhallintajärjestelmän rajoitteista johtuen).


Artikkelin on kirjoittanut Vetonaulan IT-asiantuntija Markus Pyhäranta.