Get SharePoint Site URL of an individual Microsoft Team

Copper Contributor

I found the below code online. I want to use the same concept but only return one SP site URL so I can use the URL to create a folder in that Team.

$Teams = (Get-Team |Select GroupId, DisplayName)
ForEach ($T in $Teams) {
   $SPOURl = (Get-UnifiedGroup -Identity $T.GroupId | Select -ExpandProperty SharePointSiteURL)
   Write-Host "URL for the" $T.DisplayName "team is" $SPOURL }

It would be easiest to start with getting the Team by displayname then taking the group ID and using that. All the individual versions of -expandproperty SharePointURL have not worked for me yet. Any advice?

Get-Team -DisplayName $Team | Select GroupId


9 Replies

Might help if you give us the exact samples you are running, I don't see any problem with the above.

@Vasil Michev I am trying to do something like the two examples below

Get-Team -DisplayName $Team | Select GroupId
$SPOURL = (Get-Team -Identity $Team.GroupId | Select -ExpandProperty SharePointSiteURL)


Get-Team -DisplayName $Team | Select GroupId
$SPOURL = (Get-PnpSite -Identity $Team.GroupId | Select -ExpandProperty SharePointSiteURL)

@Mitch Crump I don't want to use UnifiedGroup because I only want a singular URL but now Get-UnifiedGroup is not working for me and I can't find the required module to install for it.


PS C:\WINDOWS\system32> Find-Module -Includes Cmdlet Get-UnifiedGroup
PackageManagement\Find-Package : No match was found for the specified search criteria and module name 'Get-UnifiedGroup'. Try Get-PSRepository to see all available registered module repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\\PSModule.psm1:1397 char:3
+         PackageManagement\Find-Package @PSBoundParameters | Microsoft ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...ets.FindPackage:FindPackage) [Find-Package], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.FindPackage



Well you cannot just expect every cmdlet to return the SharePointSiteUrl value, Get-Team most certainly does not do it.


To use the Get-UnifiedGroup cmdlet, you need to connect to Exchange Online PowerShell:

@Vasil Michev do you have any suggestion on how to connect the dots from Get-Team to calling a SharePoint cmdlet and returning SharePointSiteURL?


And how odd, Get-UnifiedGroup was working for me last week without connecting to EXO...however, that is not really here nor there because I don't think I will be using it in my final script.

@Mitch Crump 


$teamMailNickName = (get-team -displayname "Name of Team").mailnickname

$TeamURL = "" + $teamMailNIckName


The MailNickName of a team can be updated with PowerShell, thus the TeamURL no longer matches this schema `$TeamURL = "" + $teamMailNickName`.
The SharePoint site URL of a Team can also be updated independently.

@Mitch Crump 

With Graph Explorer, I'm able to request the following endpoint:




Which return the requested information:


"@odata.context": "$metadata#sites(name,webUrl)/$entity",
"name": "MYTEAMSITE",
"webUrl": "https://<tenant>"



But the translated PowerShell query doesn't work for me, it asks for a $SiteId parameter, but I don't know how to get it for a Team site:


Import-Module Microsoft.Graph.Sites
Get-MgGroupSite -GroupId $groupId -SiteId $siteId -Property "name,webUrl" 



Instead of using a couple of PowerShell Modules (ExchangeOnlineManagement, MicrosoftTeams, Sharepoint online management shell), I managed to do what I wanted (Updating MailNickname and SharePointSiteURL of aTeams site) with PnP.Powershell module.


With this module, to get a Teams Site URL, use the following code:

Get-PnPMicrosoft365Group -Identity $GroupId -IncludeSiteUrl | Select-Object -ExpandProperty SiteUrl