PowerShell 用于获取与 SharePoint Online 中的中心网站关联的所有网站
要求:使用 PowerShell 在 SharePoint Online 中获取中心网站关联。
SharePoint Online:使用 PowerShell 获取中心站点关联
SharePoint Online Hub 网站可帮助根据项目、团队、概念、部门、区域等组织属性将相关网站组织到集中式门户中。如果您不熟悉 Office 365 中的中心网站,我建议您查看此链接在继续之前。我的另一篇文章中解释了 SharePoint Online 中的中心网站:在 SharePoint Online 中配置中心网站
如何获取所有 Hub 站点及其关联的网站集?
要获取所有中心站点关联,请前往:
这将为您提供与特定中心站点关联的站点列表。
PowerShell 在 SharePoint Online 中获取中心站点关联
以下是用于获取与 SharePoint Online 中的中心网站关联的所有网站的 PowerShell:
#Import SharePoint Online PowerShell Module
Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking
#Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
#Connect to SharePoint Online
Connect-SPOService -Url $AdminCenterURL -Credential (Get-Credential)
#Get all Hubsites
$HubSites = Get-SPOHubSite
#Get all site collections
$Sites = Get-SPOSite -Limit All
#Iterate through site collections to get associated sites with the hub
ForEach($Hub in $HubSites)
{
Write-host "Hub-Site:"$Hub.SiteUrl
#Get the ID of the Hubsite
$HubSiteId = $Hub.ID.GUID
#Iterate through each site collection
ForEach($Site in $Sites)
{
#get the Associated Hubsite ID
$AssociatedHubSiteID = (Get-SPOSite $site.Url).HubSiteID.GUID
If($AssociatedHubSiteID -eq $HubSiteId)
{
Write-Host "`t $($Site.Url)"
}
}
}
此 PowerShell 脚本可为您提供所有中心网站及其关联网站集的列表。要获取特定网站集的关联中心网站,请使用以下命令:
#Import SharePoint Online PowerShell Module
Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking
#Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$HubSiteURL = "https://crescent.sharepoint.com/sites/intranet"
#Connect to SharePoint Online
Connect-SPOService -Url $AdminCenterURL -Credential (Get-Credential)
#Get the Hubsite ID
$HubSiteId = (Get-SPOHubSite | Where {$_.SiteUrl -eq $HubSiteURL}).Id.Guid
#Get all site collections
$Sites = Get-SPOSite -Limit All
#Iterate through site collections to get associated sites with the hub
ForEach($Site in $Sites)
{
Try {
#Get the Associated Hubsite ID of the site collection
$AssociatedHubSiteID = (Get-SPOSite $site.Url).HubSiteID.GUID
If($AssociatedHubSiteID -eq $HubSiteId)
{
Write-Host "`t $($Site.Url)"
}
}
Catch {
write-host -f Red "`tError:" $_.Exception.Message
}
}
使用 PnP PowerShell 获取与中心站点关联的所有站点
以下是如何使用 PnP PowerShell 获取与中心站点关联的所有站点的示例:
#Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$HubSiteURL = "https://crescent.sharepoint.com/sites/intranet"
#Connect to Pnp Online
Connect-PnPOnline -Url $AdminCenterURL -Credentials (Get-Credential) #-Interactive
#Get the hub site id
$HubSiteID = (Get-PnPTenantSite $HubSiteURL).HubSiteId
#Get all site collections associated with the hub site
Get-PnPTenantSite -Detailed | select url | ForEach-Object {
$Site = Get-PnPTenantSite $_.url
If($Site.HubSiteId -eq $HubSiteId){
write-host $Site.url
}
}
我们使用 PowerShell 来获取与 Hub 网站关联的所有网站集。现在,让我们通过将所有关联站点设置为只读模式来实际应用它!
#Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$HubSiteURL = "https://crescent.sharepoint.com/sites/intranet"
#Connect to Pnp Online
Connect-PnPOnline -Url $AdminCenterURL -Credentials (Get-Credential) #-Interactive
#Get the hub site id
$HubSiteID = (Get-PnPTenantSite $HubSiteURL).HubSiteId
#Loop through site collections
$Sites = Get-PnPTenantSite
ForEach($Site in $Sites)
{
#Get the Site collection
$Site = Get-PnPTenantSite $Site.url -ErrorAction SilentlyContinue
If($Site)
{
If($Site.HubSiteId -eq $HubSiteId)
{
write-host "Setting Site Collection to Read-only:"$Site.url
Set-PnPTenantSite -Url $Site.URL -LockState ReadOnly
}
}
}
