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 报告:
等等,有一个问题!在群组连接的网站上,您将在上述脚本输出中仅看到“群组所有者”(例如“营销所有者”)。以下是如何展开每个组以获取该组的所有者并使用 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 环境中的所有网站集管理员。
