In this blog post I highlight the integration of Azure Cloud Shell for Teams within the Teams Admin Center and how it looks like. Cloud Shell for Teams in the Teams Admin Center became generally available starting in October 2021.

Photo by Negative Space on Pexels.com

What’s Azure Cloud Shell for Microsoft Teams?

Azure Cloud Shell is a shell which you can use via browser. Now the Cloud Shell for Teams running within the Teams Admin Center is nothing else then the Teams Shell running online in your browser. You don’t have to download any Teams Module, check if you are allowed to run scripts locally on your machine.

Hereinafter, I’ll call Azure Cloud Shell for Teams just Teams Cloud Shell or only Cloud Shell.

Requirements – Teams Cloud Shell

To start you need to have a Azure subscription for the directory wherein you have your Microsoft 365 services hosted.

Overview – Teams Cloud Shell

You can start to use and configure Teams Cloud Shell if it looks like that in your Teams Admin Center:

Source: Screenshot Teams Admin Center

What you see is the first time splash screen to start with.

Source: Screenshot Teams Admin Center

In case you read “No valid subscriptions found” you do not have a Azure subscription or no permissions to use it.

Source: Screenshot Teams Admin Center

As soon as you have a valid Azure subscription it looks like this and asking you to create a storage because an Azure file share is required. If you click “Create storage” you have to wait some time.

Source: Screenshot Teams Admin Center

After the creation completed you get the Teams Cloud Shell opened.

Source: Screenshot Teams Admin Center

Let’s see what we can do!?

Source: Screenshot Teams Admin Center

Checking module availability does not show any Teams module. Anyway, let’s try to get all online users with Get-CsOnlineuser…

Source: Screenshot Teams Admin Center

Haha, good one: I’m in the TAC, authenticated and authorized as Teams Admin but the Teams Cloud Shell wants me to run “Connect-MicrosoftTeams” as I would do on any other “remote” system, e.g. my notebook. Alright, let’s do what we have to. But let’s check for the Teams module, just because I’m curious.

Source: Screenshot Teams Admin Center

It loaded the Teams Module 3.0.0 just by putting in a Teams cmdlet. That’s good and meets my expectation. … let’s connect to Teams.

Source: Screenshot Teams Admin Center

This seems to work, at a first glance but notifying me that interactive authentication is not supported. Now testing does not get us anywhere…

Source: Screenshot Teams Admin Center

Let’s run “Disconnect-MicrosoftTeams”, try to re-connect with parameters but which ones?

Source: Screenshot Teams Admin Center

I tried it Connect-MicrosoftTeams -UseDeviceAuthentication.

Pretty thing here: You can click on the link for device login. That’s really nice. On the page you have to enter the code and sign in plus confirm that you want to use MS Teams Powershell Cmdlets from a device located where your Azure/M365 tenant is running. In my case it was Azure West Europe, Netherlands.

Source: Screenshot running Teams cmdlet in Cloud Shell

There we go. Now you can do your work without taking care of the Teams Module version or else you might have to care about on your local machine. You might also want to checkout the available buttons of the Cloud Shell because it allows you to up-/download files (scripts) or to open an (script/text) editor to also save you work online on the Azure file share which you created previously by click “create storage”.

Source: Screenshot Cloud Shell Editor

Conclusion, opinion and summary

Setting up Teams Cloud Shell is easy if you have everything like Azure subscription and required permissions on Azure and Teams.

If you have to work a with Teams Shell on a daily basis for simple tasks it can be helpful. Especially for support and minor tasks.

Although I could run scripts (not tested) there I would not do it, currently, but that’s just my preference right now, which might change over time. To me, using Teams Cloud Shell comes in handy to quickly check or configure something, if available. I probably will use it in certain cases and not all the time depending on the environment and the task.

Additional resources