Introduction

This article demonstrates how to restore Archived MS Teams using Microsoft Graph API in PowerShell. As an administrator of MS teams for an organization, you want to restore an archived site if the business has requested to do so. The best way to achieve team restoration for archived sites is an automation process using PowerShell with the help of Graph API.
When you restore a team, it restores the user's ability to send messages, chat, and edit the team settings.
In this article, we will use Microsoft Graph API to restore archived teams within the PowerShell script. First, we need to register the PowerShell Module in Azure Active Directory, then provide Admin Consent to the app and finally, Restore the Teams using Graph API.
Prerequisites
Please install the SharePointPnpPowerShellOnline module if it’s not already present using the below command.
  1. Install-Module SharePointPnPPowerShellOnline

Register PowerShell application in Azure

Go to the Azure Active Directory App registration page, as shown below:
How To Restore MS Teams Using Graph API In PowerShell
On a click of the “+ New Registration” link, as highlighted above, you will be redirected as shown in the below screen:
How To Restore MS Teams Using Graph API In PowerShell
Enter the Name of Application and click on the “Register” button, as highlighted above. The user will be redirected to an overview screen of the app. This is shown below, after registration of the app is successful.
How To Restore MS Teams Using Graph API In PowerShell
Click on “API permissions” to provide app permission to access the Graph API, the user will be redirected to the below screen:
How To Restore MS Teams Using Graph API In PowerShell
Click on “Add a permission” as highlighted above.

Select Microsoft Graph API, as shown below.
How To Restore MS Teams Using Graph API In PowerShell
Click on “Application Permissions”.
Select the below permissions and click on Add Permission, as highlighted below:
  • Directory.ReadWrite.All
  • Group.ReadWrite.All
  • Team.ReadBasic.All
  • TeamSettings.ReadWrite.All
How To Restore MS Teams Using Graph API In PowerShell
Click Grant admin consent as highlighted below for the app.
How To Restore MS Teams Using Graph API In PowerShell

Once Admin consent granted successfully screen displayed as below
How To Restore MS Teams Using Graph API In PowerShell
Go to Overview of the App. Copy the Application (client) ID value as highlighted in the below screen. This value will be used in PowerShell for authentication.
How To Restore MS Teams Using Graph API In PowerShell
Click on “Certificates & secrets” as highlighted above to generate a secret key which will be used in PowerShell
How To Restore MS Teams Using Graph API In PowerShell
Click New client secret, as highlighted above.
How To Restore MS Teams Using Graph API In PowerShell
Enter the Description and click on the “Add” button to generate a Client Secret.
How To Restore MS Teams Using Graph API In PowerShell
Copy the secret value which will be used in PowerShell for authentication.
Using the above steps, we have received an Application ID and Client Secret which will be used in PowerShell Script.

PowerShell Script to Restore Team

Input MS teams to restore:
How To Restore MS Teams Using Graph API In PowerShell
Variables Explanations in this Articles
Connect the Graph API and Get the Access Token
  1. #Connect App
  2. Connect-PnPOnline -AppId $ApplicationID -AppSecret $ClientSecret -AADDomain $ActiveDirectorydomainName
  3. # Get Access token of the App
  4. $token = Get-PnPAccessToken
Get All MS Teams in the tenant
Call the Invoke Rest Method to get the All MS teams by Passing the Token and store in $Output variable.
  1. $GetAllTeamsAPIURL = "https://graph.microsoft.com/beta/groups?`$filter=resourceProvisioningOptions/Any(x:x eq 'Team')"
  2. $headers = @{"Authorization"="Bearer " + $token;"Content-Type"= "application/json";}
  3. $output = Invoke-RestMethod -Uri $GetAllTeamsAPIURL -Headers $headers -Method GET
Loop and Restore the Team
Loop all the Teams and match with with the Team name we want to Restore and call UnArchive Team Graph API
  1. foreach($value in $output.value) {
  2. if ($value.displayName - eq $TeamName) {
  3. $TeamID = $value.id
  4. $ArchiveTeamAPIURL = "https://graph.microsoft.com/v1.0/teams/" + $TeamID + "/unarchive"
  5. $response = Invoke - RestMethod - Uri $ArchiveTeamAPIURL - Headers $headers - Method "POST"
  6. }
  7. }
Complete PowerShell Script
  1. #Powershell script to Restore an Archived MS team
  2. #Created By: Vinit Kumar
  3. # Variable - Change the parameter as it need
  4. $ApplicationID = "9381bf0d-6128-478e-b1fd-5a0ed48d37d5"
  5. # Application ID as we have created during the Register application process
  6. $ClientSecret = "jvo0J3hmDk.Be_1ZE30dkCt0GPDhM.1S~2"
  7. # Client Secret as we have created during the Register application process
  8. $ActiveDirectorydomainName = "263994CTS.onmicrosoft.com"
  9. # Active Directory Domain name
  10. $TeamName = "Test Team to Restore"
  11. # Display Name of the Team you want to restore.
  12. #Ends
  13. #Connect App
  14. Connect - PnPOnline - AppId $ApplicationID - AppSecret $ClientSecret - AADDomain $ActiveDirectorydomainName
  15. # Get Access token of the App
  16. $token = Get - PnPAccessToken
  17. # Get all Teams availabe in Tenant
  18. $GetAllTeamsAPIURL = "https://graph.microsoft.com/beta/groups?`$filter=resourceProvisioningOptions/Any(x:x eq 'Team')"
  19. $headers = @ {
  20. "Authorization" = "Bearer " + $token;
  21. "Content-Type" = "application/json";
  22. }
  23. $output = Invoke - RestMethod - Uri $GetAllTeamsAPIURL - Headers $headers - Method GET
  24. #Ends
  25. #Loop all the Teams, Match with Team name we want to Restore and call UnArchive Team Graph API
  26. foreach($value in $output.value) {
  27. if ($value.displayName - eq $TeamName) {
  28. $YourTeamID = $value.id
  29. $ArchiveTeamAPIURL = "https://graph.microsoft.com/v1.0/teams/" + $YourTeamID + "/unarchive"
  30. $response = Invoke - RestMethod - Uri $ArchiveTeamAPIURL - Headers $headers - Method "POST"
  31. }
  32. }
  33. #Ends
Output of Restored MS team
After execution of the script, your Teams will be restored, as shown below.
How To Restore MS Teams Using Graph API In PowerShell

Summary

In this article, I discussed how we can restore an archived MS team using Graph API in PowerShell. We discussed how to register the APP in Azure Active Directory and provide permission to the app to connect Graph API. Restoration of the Teams is necessary when IT maintains and governs teams within an organization.