Cloud Shell
Heute brauchen Sie nicht mal einen eigenen Computer sondern nur noch einen Browser und eine Azure-Subscription, um eine in Azure bereitgestellte Shell (BASH oder PowerShell) zur Verwaltung zu starten. Hier geht es um die Azure Cloud Shell.
Starten
Mit den entsprechenden Berechtigungen können sie auf https://portal.azure.com gehen und direkt in der Kopfzeile finden Sie das kleine "Shell"-Symbol. Sie können auch direkt über die URL https://portal.azure.com/#cloudshell/ die Shell starten.
Die Cloud Shell benötigt eine Azure Subscription, um die erforderliche Rechenleistung und Speicherplatz abzurechnen.
In meinem Fall warnt die Shell nun, dass sie "ephemeral" (kurzfristig, flüchtig), d.h. alle Änderungen wie Laden von Modulen, Speichern von Dateien etc. sind nicht beständig und gehen mit dem Schließen verloren. Durch Commandlets ausgeführte Aktionen, z.B.: die Bearbeitung von Objekten in Exchange oder Entra ID sind natürlich davon nicht betroffen
Ich brauche also eine Azure Subscription, bei der auch Zahlungsinformationen hinterlegt sind. Aber normalerweiser entstehen keine Kosten (Stand Jan 2025). Erst wenn ich Dateien und Skripte dauerhaft speichern möchte, muss ich einen "Azure File Share" kaufen und mit der Shell verbinden. Soll meine Shell in einem virtuellen Netzwerk laufen, damit ich im privaten Netzwerk unterwegs bin, dann fallen für das Netzwerk weitere Kosten an.
- Cloud Shell - Ihr von Microsoft
verwalteter Administratorcomputer in Azure
für Azure
https://azure.microsoft.com/de-de/get-started/azure-portal/cloud-shell - Cloud Shell Pricing
https://learn.microsoft.com/en-us/azure/cloud-shell/pricing
"Cloud Shell is a free service. You only pay for the underlying Azure resources that are consumed." - Azure Files Pricing
https://azure.microsoft.com/pricing/details/storage/files/ - Virtual Network Pricing
https://azure.microsoft.com/pricing/details/virtual-network/
PSCore auf Linux
Zuerst habe ich mir mal angeschaut, was ich da so habe. Es ist eine PowerShell Core in der aktuellen Version, die aber auf einen Azure Linux läuft.
Das bedeutet im Umkehrfall, dass natürlich alle AddOns und Module mit einem Bezug zu Windows-DLLs (z.B. EWS) oder COM-APIs nicht funktionieren werden. Leider fehlen auch Commandlets, um z.B. die Netzwerkkonfiguration auszulesen. Da der Unterbau aber ein Linux ist, müssen wir eben andere Befehle nutzen:
Hier eine Auswahl
ifconfig Vergleichbar mit IPConfig zur Anzeige der Netzwerkkarten tracepath Traceroute, allerdings scheint die Shell ICMP zu blocken nslookup und dig DNS-Anfragen host ReverseDNS-Abfragen cp Klassischer Copy Hostname liefert den lokalen Namen. Bei mir war das "SANDBOX-63873827073888416" sysctl -a Zeigt alle System-Einstellungen (Linux) an top Linux-like Taskmanager
Hier mal meine Ausgabe von TOP
- Azure Linux
https://en.wikipedia.org/wiki/Azure_Linux
Standardmodule
Mit dem Start sind einige Module vorinstalliert: (Stand Jan 2025)
PS /home/frank_carius> Get-Module ModuleType Version Name ExportedCommands ---------- ------- ---- --------------- Script 4.0.1 Az.Accounts {Add-AzEnvironment, Clear-AzConfig, Clear-AzContext, Clear-AzDefault…} Script 9.0.1 Az.Compute {Add-AzImageDataDisk, Add-AzVhd, Add-AzVMAdditionalUnattendContent, Add-AzVMDataDisk…} Script 7.12.0 Az.Network {Add-AzApplicationGatewayAuthenticationCertificate, Add-AzApplicationGatewayBackendAddressPool, Add-… Script 7.8.0 Az.Resources {Export-AzResourceGroup, Export-AzTemplateSpec, Get-AzDenyAssignment, Get-AzDeployment…} Script 8.1.0 Az.Storage {Add-AzRmStorageContainerLegalHold, Add-AzStorageAccountManagementPolicyAction, Add-AzStorageAccount… Script 1.1.3 Az.Tools.Predictor {Disable-AzPredictor, Enable-AzPredictor, Open-AzPredictorSurvey, Send-AzPredictorRating} Script 0.0.0.10 AzureAD.Standard.Preview {Add-AzureADApplicationOwner, Add-AzureADDeviceRegisteredOwner, Add-AzureADDeviceRegisteredUser, Add… Script 0.9.3 AzurePSDrive Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Content, Clear-Content, Clear-Item, Clear-ItemProperty…} Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable, Compare-Object…} Script 1.4.8.1 PackageManagement {Find-Package, Find-PackageProvider, Get-Package, Get-PackageProvider…} Script 0.9.3 PSCloudShellUtility {Disable-AzVMPSRemoting, Dismount-CloudDrive, Enable-AzVMPSRemoting, Export-File…} Script 2.3.6 PSReadLine {Get-PSReadLineKeyHandler, Get-PSReadLineOption, Remove-PSReadLineKeyHandler, Set-PSReadLineKeyHandl… Binary 0.8.1 SHiPS
Sie sehen hier erst einmal keine Exchange oder Teams-Shells. Aber Über den Befehl "Get-Packages" sehen sie zusätzlich, welche weitere Pakete schon vorinstalliert sind. (Stand Jan 2025)
PS /home/frank_carius> get-package Name Version Source ProviderName ---- ------- ------ ------------ Az 13.1.0 /usr/cloudshell/temp PowerShellGet Az.Accounts 4.0.1 /usr/cloudshell/temp PowerShellGet Az.Advisor 2.1.0 /usr/cloudshell/temp PowerShellGet Az.Aks 6.1.0 /usr/cloudshell/temp PowerShellGet Az.AnalysisServices 1.2.0 /usr/cloudshell/temp PowerShellGet Az.ApiManagement 4.1.0 /usr/cloudshell/temp PowerShellGet Az.App 2.0.1 /usr/cloudshell/temp PowerShellGet Az.AppConfiguration 1.4.0 /usr/cloudshell/temp PowerShellGet Az.ApplicationInsights 2.3.0 /usr/cloudshell/temp PowerShellGet Az.ArcResourceBridge 1.1.0 /usr/cloudshell/temp PowerShellGet Az.Attestation 2.1.0 /usr/cloudshell/temp PowerShellGet Az.Automanage 1.1.0 /usr/cloudshell/temp PowerShellGet Az.Automation 1.11.0 /usr/cloudshell/temp PowerShellGet Az.Batch 3.7.0 /usr/cloudshell/temp PowerShellGet Az.Billing 2.2.0 /usr/cloudshell/temp PowerShellGet Az.Cdn 3.3.0 /usr/cloudshell/temp PowerShellGet Az.CloudService 2.1.0 /usr/cloudshell/temp PowerShellGet Az.CognitiveServices 1.15.0 /usr/cloudshell/temp PowerShellGet Az.Compute 9.0.1 /usr/cloudshell/temp PowerShellGet Az.ConfidentialLedger 1.1.0 /usr/cloudshell/temp PowerShellGet Az.ConnectedMachine 1.1.1 /usr/cloudshell/temp PowerShellGet Az.ContainerInstance 4.1.1 /usr/cloudshell/temp PowerShellGet Az.ContainerRegistry 4.3.0 /usr/cloudshell/temp PowerShellGet Az.CosmosDB 1.16.0 /usr/cloudshell/temp PowerShellGet Az.DataBoxEdge 1.2.0 /usr/cloudshell/temp PowerShellGet Az.DataFactory 1.19.0 /usr/cloudshell/temp PowerShellGet Az.DataLakeAnalytics 1.1.0 /usr/cloudshell/temp PowerShellGet Az.DataLakeStore 1.4.0 /usr/cloudshell/temp PowerShellGet Az.DataProtection 2.6.0 /usr/cloudshell/temp PowerShellGet Az.DataShare 1.1.0 /usr/cloudshell/temp PowerShellGet Az.Databricks 1.10.0 /usr/cloudshell/temp PowerShellGet Az.DesktopVirtualization 5.4.1 /usr/cloudshell/temp PowerShellGet Az.DevCenter 2.0.1 /usr/cloudshell/temp PowerShellGet Az.DevTestLabs 1.1.0 /usr/cloudshell/temp PowerShellGet Az.Dns 1.3.1 /usr/cloudshell/temp PowerShellGet Az.DnsResolver 1.1.1 /usr/cloudshell/temp PowerShellGet Az.ElasticSan 1.2.1 /usr/cloudshell/temp PowerShellGet Az.EventGrid 2.2.0 /usr/cloudshell/temp PowerShellGet Az.EventHub 5.1.0 /usr/cloudshell/temp PowerShellGet Az.FrontDoor 1.12.0 /usr/cloudshell/temp PowerShellGet Az.Functions 4.2.0 /usr/cloudshell/temp PowerShellGet Az.HDInsight 6.3.1 /usr/cloudshell/temp PowerShellGet Az.HealthDataAIServices 1.0.0 /usr/cloudshell/temp PowerShellGet Az.HealthcareApis 2.1.0 /usr/cloudshell/temp PowerShellGet Az.IotHub 2.8.0 /usr/cloudshell/temp PowerShellGet Az.KeyVault 6.3.1 /usr/cloudshell/temp PowerShellGet Az.Kusto 2.4.0 /usr/cloudshell/temp PowerShellGet Az.LoadTesting 1.1.0 /usr/cloudshell/temp PowerShellGet Az.LogicApp 1.6.0 /usr/cloudshell/temp PowerShellGet Az.MachineLearning 1.2.0 /usr/cloudshell/temp PowerShellGet Az.MachineLearningServices 1.2.0 /usr/cloudshell/temp PowerShellGet Az.Maintenance 1.5.0 /usr/cloudshell/temp PowerShellGet Az.ManagedServiceIdentity 1.3.0 /usr/cloudshell/temp PowerShellGet Az.ManagedServices 3.1.0 /usr/cloudshell/temp PowerShellGet Az.MarketplaceOrdering 2.1.0 /usr/cloudshell/temp PowerShellGet Az.Media 1.2.0 /usr/cloudshell/temp PowerShellGet Az.Migrate 2.6.0 /usr/cloudshell/temp PowerShellGet Az.Monitor 6.0.1 /usr/cloudshell/temp PowerShellGet Az.MySql 1.3.0 /usr/cloudshell/temp PowerShellGet Az.Network 7.12.0 /usr/cloudshell/temp PowerShellGet Az.NetworkCloud 1.1.0 /usr/cloudshell/temp PowerShellGet Az.Nginx 1.2.0 /usr/cloudshell/temp PowerShellGet Az.NotificationHubs 1.2.0 /usr/cloudshell/temp PowerShellGet Az.OperationalInsights 3.3.0 /usr/cloudshell/temp PowerShellGet Az.Oracle 1.1.0 /usr/cloudshell/temp PowerShellGet Az.PolicyInsights 1.7.0 /usr/cloudshell/temp PowerShellGet Az.PostgreSql 1.2.0 /usr/cloudshell/temp PowerShellGet Az.PowerBIEmbedded 2.1.0 /usr/cloudshell/temp PowerShellGet Az.PrivateDns 1.2.0 /usr/cloudshell/temp PowerShellGet Az.RecoveryServices 7.4.0 /usr/cloudshell/temp PowerShellGet Az.RedisCache 1.11.0 /usr/cloudshell/temp PowerShellGet Az.RedisEnterpriseCache 1.2.1 /usr/cloudshell/temp PowerShellGet Az.Relay 2.1.0 /usr/cloudshell/temp PowerShellGet Az.ResourceGraph 1.1.0 /usr/cloudshell/temp PowerShellGet Az.ResourceMover 1.3.0 /usr/cloudshell/temp PowerShellGet Az.Resources 7.8.0 /usr/cloudshell/temp PowerShellGet Az.Security 1.8.0 /usr/cloudshell/temp PowerShellGet Az.SecurityInsights 3.2.0 /usr/cloudshell/temp PowerShellGet Az.ServiceBus 4.1.0 /usr/cloudshell/temp PowerShellGet Az.ServiceFabric 3.5.0 /usr/cloudshell/temp PowerShellGet Az.SignalR 2.1.0 /usr/cloudshell/temp PowerShellGet Az.Sql 6.0.1 /usr/cloudshell/temp PowerShellGet Az.SqlVirtualMachine 2.4.0 /usr/cloudshell/temp PowerShellGet Az.StackHCI 2.5.0 /usr/cloudshell/temp PowerShellGet Az.StackHCIVM 1.1.0 /usr/cloudshell/temp PowerShellGet Az.Storage 8.1.0 /usr/cloudshell/temp PowerShellGet Az.StorageMover 1.5.0 /usr/cloudshell/temp PowerShellGet Az.StorageSync 2.4.0 /usr/cloudshell/temp PowerShellGet Az.StreamAnalytics 2.1.0 /usr/cloudshell/temp PowerShellGet Az.Support 2.1.0 /usr/cloudshell/temp PowerShellGet Az.Synapse 3.1.0 /usr/cloudshell/temp PowerShellGet Az.Tools.Predictor 1.1.3 https://www.powershellgallery.c… PowerShellGet Az.TrafficManager 1.3.0 /usr/cloudshell/temp PowerShellGet Az.Websites 3.3.0 /usr/cloudshell/temp PowerShellGet AzureAD.Standard.Preview 0.0.0.10 /usr/cloudshell/temp PowerShellGet AzurePSDrive 0.9.3 https://www.powershellgallery.c… PowerShellGet ExchangeOnlineManagement 3.7.0 https://www.powershellgallery.c… PowerShellGet GuestConfiguration 4.6.0 https://www.powershellgallery.c… PowerShellGet Microsoft.Graph.Applications 2.25.0 https://www.powershellgallery.c… PowerShellGet Microsoft.Graph.Authentication 2.25.0 https://www.powershellgallery.c… PowerShellGet Microsoft.Graph.Groups 2.25.0 https://www.powershellgallery.c… PowerShellGet Microsoft.Graph.Identity.Dire… 2.25.0 https://www.powershellgallery.c… PowerShellGet Microsoft.Graph.Identity.Gove… 2.25.0 https://www.powershellgallery.c… PowerShellGet Microsoft.Graph.Identity.Sign… 2.25.0 https://www.powershellgallery.c… PowerShellGet Microsoft.Graph.Users.Actions 2.25.0 https://www.powershellgallery.c… PowerShellGet Microsoft.Graph.Users.Functio… 2.25.0 https://www.powershellgallery.c… PowerShellGet Microsoft.PowerShell.SecretMa… 1.1.2 https://www.powershellgallery.c… PowerShellGet Microsoft.PowerShell.SecretSt… 1.0.6 https://www.powershellgallery.c… PowerShellGet MicrosoftPowerBIMgmt 1.2.1111 https://www.powershellgallery.c… PowerShellGet MicrosoftPowerBIMgmt.Admin 1.2.1111 https://www.powershellgallery.c… PowerShellGet MicrosoftPowerBIMgmt.Capaciti… 1.2.1111 https://www.powershellgallery.c… PowerShellGet MicrosoftPowerBIMgmt.Data 1.2.1111 https://www.powershellgallery.c… PowerShellGet MicrosoftPowerBIMgmt.Profile 1.2.1111 https://www.powershellgallery.c… PowerShellGet MicrosoftPowerBIMgmt.Reports 1.2.1111 https://www.powershellgallery.c… PowerShellGet MicrosoftPowerBIMgmt.Workspac… 1.2.1111 https://www.powershellgallery.c… PowerShellGet MicrosoftTeams 6.7.0 https://www.powershellgallery.c… PowerShellGet PSReadLine 2.3.6 https://www.powershellgallery.c… PowerShellGet SHiPS 0.8.1 https://www.powershellgallery.c… PowerShellGet SqlServer 22.3.0 https://www.powershellgallery.c… PowerShellGet NuGet 1.3.3 https://www.powershellgallery.c… PowerShellGet
Der Schwerpunkt liegt natürlich auf allen Aspekten von Azure-Diensten. Wer aber genau hinschaut, findet hier sehr wohl, dass "MicrosoftTeams" als auch "ExchangeOnlineManagement" schon vorhanden sind, bzw. die Cloud Shell weiß, woher die Dateien kommen können. Sie können einfach mal "Connect-" eingeben und mit einem Druck auf die TAB-Taste passende Vorschläge anzeigen lassen (Linux Funktion)
Hier sehen Sie schön, dass sie sich direkt mit AzureAd, Graph, MicrosoftTeams, MGGraph und ExchangeOnline verbinden können. Im Jan 2025 war aber die neue Microsoft.Entra-PowerShell noch nicht vorhanden.
Connect-ExchangeOnline
Um meinen Exchange Online Tenant zu verwalten, muss ich
Die PowerShell lädt dynamische entsprechende Module nach. So sind die Exchange Module erst nicht vorhanden aber die Azure Cloud PowerShell weiß sehr wohl, dass es ein Connect-ExchangeOnline gibt was ich direkt eingeben kann
# Verbinde die Exchange PowerShell Connect-ExchangeOnline # folgender Befehl ist alt aber finden Sie immer noch in einigen Blogs Connect-EXOPSSession
Danach sind vier weitere Module ohne Rückfrage hinzugekommen.
Neben dem Modul "ExchangeOnlineManagement" gibt es eine Remote PowerShell "tmpEXO_*" mit den alten Exchange Commandlets. Sie können also Get-EXOMailbox als auch wie bisher Get-Mailbx etc. nutzen.
Get-EXOMailbox: Could not load file or assembly 'Microsoft.OData.Core, Version=7.21.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Could not find or load a specific file. (0x80131621)
Auch der Versuch das entsprechende Modul nachzuladen, war nicht erfolgreich:
Install-Module nuget Install-Package microsoft.odata.core Install-Package microsoft.odata.core -RequiredVersion 7.21.3.0 -Force -Scope currentUser
Eine Lösung habe ich dazu noch nicht.
- About the Exchange Online PowerShell
module
https://aka.ms/exov3-module
https://learn.microsoft.com/en-us/powershell/exchange/exchange-online-powershell-v2?view=exchange-ps#updates-for-version-300-the-exo-v3-module - Could not load file or assembly
Microsoft.OData.Core
https://github.com/simple-odata-client/Simple.OData.Client/issues/763 - Unable to connect to Exchange Online
with PowerShell Runtime 7.2 in Azure
Automation
https://learn.microsoft.com/en-us/answers/questions/2041276/unable-to-connect-to-exchange-online-with-powershe - Azure Cloud Shell Issues
https://github.com/Azure/CloudShell/issues - ODATA Documentation
https://learn.microsoft.com/en-us/odata/ - Github ODATA
https://github.com/OData/odata.net - Install-Package (Package Manager Console
in Visual Studio)
https://learn.microsoft.com/en-us/nuget/reference/ps-reference/ps-ref-install-package
Entra ID
Auch wenn im Jan 2025 das neue Microsoft.Entra-Modul nicht im Standard enthalten war, können wir es nachinstallieren. Allerdings blockierte hier ein anderes Modul das Update oder die Installation von Microsoft Graph
Die Anmeldung erfolgte dann über das "DeviceLogin" auf einem Browser.
Was kann ich nun damit machen?
Zuallererst kann ich damit einfach von jedem PC der Welt mit einem Browser und Zugriff auf https://portal.azure.com eine PowerShell starten und mit entsprechenden Berechtigungen in einem Tenant Äderungen per PowerShell durchführen. Das ist eigentlich schon alles. Ich kann hier nicht mehr machen, als ich auch auf meinem lokalen Computer mit einer PowerShell machen kann.
Mit der Cloud Shell brauche ich aber keine lokale PowerShell und kann die Funktionen überall nutzen, wo ein Browser verwendbar ist. Das funktioniert auch auf einem Chromebook, einem ThinClient und im Extremfall auf einem SmartTV. Es ist einfach ein weiterer Weg. Sichern Sie auf jeden Fall ihre Zugänge per MFA ab.
Weitere Links
- Inside Exchange Online PowerShell
- Azure Cloud Shell Now Supports Exchange Online
https://techcommunity.microsoft.com/blog/exchange/azure-cloud-shell-now-supports-exchange-online/652269 - Features und Tools für Azure Cloud Shell
https://learn.microsoft.com/de-de/azure/cloud-shell/features - Cloud Shell - Ihr von Microsoft verwalteter Administratorcomputer in Azure
für Azure
https://azure.microsoft.com/de-de/get-started/azure-portal/cloud-shell - Cloud Shell Pricing
https://learn.microsoft.com/en-us/azure/cloud-shell/pricing
"Cloud Shell is a free service. You only pay for the underlying Azure resources that are consumed." - Azure Files Pricing
https://azure.microsoft.com/pricing/details/storage/files/ - Virtual Network Pricing
https://azure.microsoft.com/pricing/details/virtual-network/ - How to Use Cloud Shell from the
Microsoft Teams Admin Center
https://practical365.com/use-cloud-shell-microsoft-teams-admin-center/ - Managing Exchange Online with Azure Cloud Shell
https://www.enowsoftware.com/solutions-engine/m365-exchange-online-center/azure-cloud-shell - Cloud Shell in M365 Admin Center
https://blog.icewolf.ch/archive/2020/10/09/cloud-shell-in-m365-admin-center/