当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 用于获取与 SharePoint Online 中的中心网站关联的所有网站

作者:精品下载站 日期:2024-12-14 15:43:15 浏览:14 分类:玩电脑

PowerShell 用于获取与 SharePoint Online 中的中心网站关联的所有网站


要求:使用 PowerShell 在 SharePoint Online 中获取中心网站关联。

SharePoint Online:使用 PowerShell 获取中心站点关联

SharePoint Online Hub 网站可帮助根据项目、团队、概念、部门、区域等组织属性将相关网站组织到集中式门户中。如果您不熟悉 Office 365 中的中心网站,我建议您查看此链接在继续之前。我的另一篇文章中解释了 SharePoint Online 中的中心网站:在 SharePoint Online 中配置中心网站

如何获取所有 Hub 站点及其关联的网站集?

要获取所有中心站点关联,请前往:

  1. 登录 SharePoint Online 管理中心 >> 单击“活动站点”
  2. 根据特定 Hub 站点进行过滤

    [玩转系统] PowerShell 用于获取与 SharePoint Online 中的中心网站关联的所有网站

这将为您提供与特定中心站点关联的站点列表。


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
        }
    }
}

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯