Mittwoch, 27. Mai 2020

Exchange Online PowerShell mit Windows Terminal

Windows Terminal mit großem Update: Emojis, Tabs und neues Linux ...

Ich möchte euch hier eine meiner Anpassungen für das neue Windows Terminal vorstellen. Mein Fokus für die Anpassung, lag darin eine Verbindung zu den Exchange Shells herstellen zu können.
Ich habe meine Anpassung auf Basis dieses Docs Artikels und den Post von Thomas Maurer vorgenommen.
Aber vorher noch Informationen zum neuen Windows Terminal
Das Windows-Terminal ist eine moderne, schnelle, effiziente, leistungsstarke und produktive Terminal-Anwendung für Benutzer von Befehlszeilentools und Shells wie beispielsweise Eingabeaufforderung, PowerShell und WSL. Die wichtigsten Funktionen des Windows-Terminals umfassen mehrere Registerkarten, Bereiche, Unicode- und UTF-8-Zeichenunterstützung, GPU-beschleunigtes Textrendering-Modul sowie benutzerdefinierte Designs, Formatvorlagen und Konfigurationen.
Dies ist ein Open Source-Projekt, und wir freuen uns über die Teilnahme an der Community. Um teilzunehmen, besuchen Sie bitte die Website https://github.com/microsoft/terminal

Meine Lösung ist sicher nicht die optimalste aber so lässt sich einfach eine Verbindung mit einem Exchange Server oder Exchange Online herstellen.
Ich führe im Hintergrund beim Starten eines neuen Terminal Profiles ein Powershell Script aus, welches die Remote Session zum Exchange Shell herstellt.
Dazu habe ich noch eine kleine Logik eingebaut, in der man auswählen kann ob man eine Verbindung zu einer Exchange Online Shell oder einer OnPremise Exchange Shell herstellen möchte.


Die Werte können im Script auch so angepasst werden, um immer die gleiche Verbindung zur Shell zu erhalten.



Anbei das Powershell Script welches in einem Ordner abgelegt wird:


#Clear-Host
#Exchange RemoteSession
function Show-Menu
{
     param (
           [string]$Title = 'My Menu'
     )
     Clear-Host
     Write-Host "================ $Title ================"
    
     Write-Host "Connect to a Exchange On-Premise: Press '1' for this option."
     Write-Host "Connect to a Exchange Online: Press '2' for this option."
     Write-Host "Q: Press 'Q' to quit."
}
do
{
     Show-Menu
     $input = Read-Host "Please make a selection"
     switch ($input)
     {
           '1' {
                Clear-Host
                'You chose option #1'
                $cred = get-credential 
                $ExchangeFQDN = read-host "Write Exchange FQDN (no Alias)"
                $URL = "http://" + $ExchangeFQDN + "/PowerShell/"
                
                try {
                    $Session = New-PSSession -ConfigurationName Microsoft.Exchange `
                    Write-Host "Open Session to Exchange OnPremise - please wait" `
                    -ForegroundColor Green
                    Import-PSSession $Session -DisableNameChecking
                    -ConnectionUri $URL -Authentication Kerberos -Credential $cred
                } catch {
                    Write-Host "Logon not possible. Please check credentials or Server FQDN!!" `
                    -ForegroundColor Red
                }
                exit
           } '2' {
                Clear-Host
                'You chose option #2'
                $cred = get-credential
                Write-Host "Open Session to Exchange Online - please wait" `
                -ForegroundColor Green
                $Session = New-PSSession -ConfigurationName Microsoft.Exchange `
                -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
                -Credential $cred -Authentication Basic -AllowRedirection  
                Import-PSSession $Session -DisableNameChecking
                exit
           }  'q' {
                return
           }
     }
     pause
}
until ($input -eq 'q')


In den Windows Terminal Settings (settings.json) einfach ein neues Profil erstellen:
    "profiles":
    {
        "list":
        [
            {
                // Connects to a remote machine using Windows PowerShell
                "guid""{726893ad-458f-4bf5-9cbf-7108d1f9941f}",
                "name":  "PS Exchange Shell",
                "tabTitle""PS Exchange Shell",
                "commandline""powershell.exe -noexit C:/pfad nach Wunsch/ExchangeShell.ps1",
                "icon""C:/pfad nach wusnch/Exchange-Icon.png",
                "useAcrylic"true,
                "startingDirectory""%USERPROFILE%"
            }
        ]
    },
Ich hoffe mein Post hilft dem einen oder anderen. Ich freue mich natürlich über Anregungen und Verbesserungsvorschläge. Diese dürfen gerne in den Kommentarfelder gepostet werden.


Viel Erfolg!

    

Keine Kommentare:

Kommentar veröffentlichen