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

[玩转系统] 替换 SharePoint Online 中所有网站的网站集管理员

作者:精品下载站 日期:2024-12-14 21:34:35 浏览:13 分类:玩电脑

替换 SharePoint Online 中所有网站的网站集管理员


要求:替换租户中所有网站的 SharePoint Online 网站集管理员。

如何更改 SharePoint Online 中的网站集管理员?

在 SharePoint Online 中替换网站集管理员非常简单:

  1. 导航到 SharePoint Online 网站
  2. 单击设置齿轮>>站点信息>>查看所有站点设置
  3. 在网站设置页面中,单击“网站集管理员”链接以更改网站集管理员。

    [玩转系统] 替换 SharePoint Online 中所有网站的网站集管理员

您还可以通过以下方式从 SharePoint 管理中心设置网站集管理员:

  1. 站点 >> 活动站点 >> 选择网站集
  2. 点击“权限”,然后点击“管理管理员”
  3. 在“管理管理员”页面,您可以添加/删除和管理网站集管理员。

对于租户中的所有网站集,用新管理员替换现有网站集管理员怎么样?当您有许多网站集时,通过 Web 用户界面更改网站集管理员将是一项耗时且繁琐的任务。因此,让我们使用 PowerShell 来取代网站集管理员。

PowerShell 将取代所有 SharePoint Online 网站上的网站集管理员

此 PowerShell 脚本删除 $RemoveAccount 变量中提供的用户,并添加 $AddAccount 中指定的新网站集管理员(只要 $RemoveAccount 具有网站集管理员权限)。请注意,主要网站所有者也被视为网站集管理员。


Import-Module Microsoft.Online.Sharepoint.PowerShell -DisableNameChecking

#Variables for processing
$TenantAdminURL = "https://crescent-admin.sharepoint.com"
$RemoveAccount="[email protected]"
$AddAccount = "[email protected]"

Try {
    #Connect to SharePoint Online
    Connect-SPOService -url $TenantAdminURL -credential (Get-Credential)
 
    #Get All Site Collections
    $Sites = Get-SPOSite -Limit ALL

    #Loop through each site and add site collection admin
    Foreach ($Site in $Sites)
    {
        Write-host "Scanning site:"$Site.Url -f Cyan

        Try {
            #Check if the given user is a site collection administrator
            $Admin = Get-SPOUser -Site $Site.Url -Limit All | Where {$_.IsSiteAdmin -eq $true} | Where {$_.LoginName -eq $RemoveAccount }
    
            If($Admin -ne $Null)
            {            
                #Add the new user as Site Collection Admin
                Write-host "`tAdding Site Collection Admin to:"$Site.URL -f Yellow -NoNewline
                Set-SPOUser -site $Site -LoginName $AddAccount -IsSiteCollectionAdmin $True| Out-Null
                Write-host " - Done!" -f Green

                #Remove the existing Site collection Administrator
                Write-host "`tRemoving Site Collection Admin from:"$Site.URL -f Yellow  -NoNewline
                Set-SPOUser -site $Site -LoginName $RemoveAccount -IsSiteCollectionAdmin $False | Out-Null
                Write-host " - Done!" -f Green       
            }
        }
        Catch {
            write-host -f Red "`tError Replacing Site Collection Administrators!" $_.Exception.Message
        }
    }
}
Catch {
    write-host -f Red "`tError:" $_.Exception.Message
} 

请注意,对于 Microsoft 365 组连接的网站以及将 AD 组添加为网站集管理员的网站,此替换应在组级别完成。

PnP PowerShell 将取代 SharePoint Online 中的网站集管理员

同样,上面的脚本可以在 PnP PowerShell 脚本中重写以替换网站集管理员:


#Parameters
$TenantAdminURL = "https://Crescent-admin.sharepoint.com"
$OldAdminAccount= "i:0#.f|membership|[email protected]"
$NewAdminAccount = "i:0#.f|membership|[email protected]"

Try {
    #Connect to Admin Center
    $Cred = Get-Credential
    Connect-PnPOnline -Url $TenantAdminURL -Credentials $Cred
  
    #Get All Site collections
    $SiteCollections = Get-PnPTenantSite

    #Loop through each site collection
    ForEach($Site in $SiteCollections)
    {
        Try {
            #Connect to site collection
            Connect-PnPOnline -Url $Site.Url -Credentials $Cred
            Write-host "Scanning site:"$Site.Url -f Cyan
  
            #Get site collection admins
            $SiteAdmin = Get-PnPSiteCollectionAdmin | Where {$_.LoginName -eq $OldAdminAccount}

            If($SiteAdmin -ne $Null)
            {
                #Add the new user as Site Collection Admin
                Write-host "`tAdding Site Collection Admin to:"$Site.URL -f Yellow -NoNewline
                Add-PnPSiteCollectionAdmin -Owners $NewAdminAccount
                Write-host " - Done!" -f Green

                #Remove the existing Site collection Administrator
                Write-host "`tRemoving Site Collection Admin from:"$Site.URL -f Yellow  -NoNewline
                Remove-PnPSiteCollectionAdmin -Owners $OldAdminAccount
                Write-host " - Done!" -f Green       
            }            
        }
        Catch {
            write-host -f Red "`tError Replacing Site Collection Administrators!" $_.Exception.Message
        }
    }
}
Catch {
    write-host -f Red "`tError:" $_.Exception.Message
}

确保运行这些 PowerShell 脚本的帐户具有租户中所有网站集的网站集管理员权限。否则,您可能会遇到问题:

访问被拒绝。 (HRESULT 异常:0x80070005 (E_ACCESSDENIED))

此脚本检查给定用户是否是该网站的网站集管理员。如果是,它会添加新用户并从站点中删除旧用户。但是,假设您没有网站的网站集管理员权限。在这种情况下,您无法通过 PowerShell 获取该网站的现有网站集管理员(不过,您可以添加/删除网站集管理员!)。

以下是如何将网站集管理员添加到租户中的所有网站:使用 PowerShell 将网站集管理员添加到所有 SharePoint Online 网站

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

取消回复欢迎 发表评论:

关灯