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

[玩转系统] SharePoint Online:将网站集管理员导出到 CSV 报告

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

SharePoint Online:将网站集管理员导出到 CSV 报告


要求:获取 SharePoint Online 的网站集管理员报告。

您必须具有网站集管理员权限,才能通过 PowerShell 获取 SharePoint Online 网站的现有网站集管理员!如何将网站集管理员添加到所有 SharePoint Online 网站?

PowerShell 在 SharePoint Online 中获取网站集管理员并导出为 CSV:

网站集管理员可以完全控制网站集,包括管理权限、内容和设置的能力。出于安全和治理原因,维护 SharePoint Online 中的网站集管理员列表非常重要。如果您是 SharePoint Online 管理员,有时可能需要将网站集管理员从环境中的所有网站导出到 CSV 文件。例如,您可能需要它来记录谁有权访问哪些站点,或者如果您需要记录站点管理员以进行审核。本文向您展示如何使用 PowerShell 将网站集管理员提取并导出到 CSV 文件。

让我们获取所有 SharePoint Online 网站的网站集管理员,并使用 PowerShell 将它们导出到 CSV 报告。


#Variables for processing
$AdminCenterURL = "https://Crescent-admin.sharepoint.com"
$ReportOutput="C:\Temp\SiteCollectionAdmins.csv"
 
Try {
    #Connect to SharePoint Online
    Connect-SPOService -url $AdminCenterURL -Credential (Get-Credential)
 
    #Get all Site colections
    $Sites = Get-SPOSite -Limit ALL
    $SiteData = @()
    
    #Get Site Collection Administrators of Each site
    Foreach ($Site in $Sites)
    {
        Write-host -f Yellow "Processing Site Collection:"$Site.URL
     
        #Get all Site Collection Administrators
        $SiteAdmins = Get-SPOUser -Site $Site.Url -Limit ALL | Where { $_.IsSiteAdmin -eq $True} | Select DisplayName, LoginName

        #Get Site Collection Details
        $SiteAdmins | ForEach-Object {
        $SiteData += New-Object PSObject -Property @{
                'Site Name' = $Site.Title
                'URL' = $Site.Url
                'Site Collection Admins' = $_.DisplayName + " ("+ $_.LoginName +"); "
                }
        }
    }
    $SiteData 
    #Export the data to CSV
    $SiteData | Export-Csv $ReportOutput -NoTypeInformation
    Write-Host -f Green "Site Collection Admninistrators Data Exported to CSV!"
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

以及租户中所有 SharePoint Online 网站集的网站集管理员 CSV 报告:

[玩转系统] SharePoint Online:将网站集管理员导出到 CSV 报告

等等,有一个问题!在群组连接的网站上,您将在上述脚本输出中仅看到“群组所有者”(例如“营销所有者”)。以下是如何展开每个组以获取该组的所有者并使用 PnP PowerShell 将其导出到 CSV 报告。


#Set Variables
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
$ReportOutput = "C:\Temp\SiteAdmins.csv"

Try {
    #Connect to Admin Center
    Connect-PnPOnline -Url $AdminSiteURL -Interactive
  
    #Get All Site collections - Exclude: Seach Center, Mysite Host, App Catalog, Redirect, Content Type Hub, eDiscovery and Bot Sites
    $SiteCollections = Get-PnPTenantSite | Where -Property Template -NotIn ("SRCHCEN#0", "REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1")
 
    #Loop through each site collection
    $SiteAdminData = @()
    ForEach($Site in $SiteCollections) 
    { 
        Write-host -F Yellow "Getting Site Collection Administrators of the site: " $Site.Url 
        Connect-PnPOnline -Url $Site.Url -Interactive
    
        #Get Site Collection Administrators
        $SiteAdminstrators = @()
        Get-PnPSiteCollectionAdmin -PipelineVariable Admin | ForEach-Object {
            If($_.PrincipalType -eq "SecurityGroup") #Check if its a Microsoft 365 group
            {
                #Get Members of the Group
                $Group = Get-PnPMicrosoft365Group -IncludeOwners | Where {$_.Mail -eq $Admin.Email}
                $Group.Owners | Select Email | ForEach-Object {
                    $SiteAdminstrators += $_.Email
                }
            }
            Else
            {
                $SiteAdminstrators += $Admin.Email
            }
        }
        $Adminstrators = ($SiteAdminstrators | select -Unique) -join ";"

        #Collection Site Admin Details
        $SiteAdminData += New-Object PSObject -Property @{
            'Site Name' = $Site.Title
            'URL' = $Site.Url
            'Site Collection Admins' = $Adminstrators
        }
    }

    $SiteAdminData

    #Export the data to CSV
    $SiteAdminData | Export-Csv $ReportOutput -NoTypeInformation
    Write-Host -f Green "Site Collection Admninistrators Data Exported to CSV!"
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

获取所有 OneDrive for Business 网站的网站集管理员

以下是用于获取所有 OneDrive for Business 网站的 PnP PowerShell。


#Variables for processing
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$ReportOutput="C:\Temp\OneDriveAdmins.csv"

Try {
    #Connect to SharePoint Online Admin Center
    Connect-PnPOnline -url $AdminCenterURL -Interactive
  
    #Get all OneDrive Site colections
    $OneDriveSites = Get-PnPTenantSite -IncludeOneDriveSites -Filter "Url -like '-my.sharepoint.com/personal/'"
    $SiteAdminData = @()
     
    #Get Site Collection Administrators of Each site
    Foreach ($Site in $OneDriveSites)
    {
        Write-host -f Yellow "Processing Site Collection:"$Site.URL
        Connect-PnPOnline -url $Site.URL -Interactive

        #Get all Site Collection Administrators
        $SiteAdmins = Get-PnPSiteCollectionAdmin
 
        #Get Site Collection Details
        $SiteAdminData += New-Object PSObject -Property ([ordered]@{
                'Site Name' = $Site.Title
                'URL' = $Site.Url
                'Site Collection Admins' = ($SiteAdmins | Select -ExpandProperty Email) -join ";"
                })
    }
    $SiteAdminData
    #Export the data to CSV
    $SiteAdminData | Export-Csv $ReportOutput -NoTypeInformation
    Write-Host -f Green "Site Collection Admninistrators Data Exported to CSV!"
}
Catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

使用此脚本,您可以检索网站集管理员并生成汇总报告,其中包括 SharePoint Online 环境中的所有网站集管理员。

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

取消回复欢迎 发表评论:

关灯