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

[玩转系统] 如何使用 PnP PowerShell 获取所有 SharePoint Online 站点?

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

如何使用 PnP PowerShell 获取所有 SharePoint Online 站点?


我的一位客户最近要求我获取 SharePoint Online 环境中显示的所有网站。我为此尝试了 PnP PowerShell。在本教程中,我将向您展示如何使用 PnP PowerShell 获取所有 SharePoint Online 网站

在这里,我还将向您展示如何获取所有 SharePoint 团队网站、通信网站、未连接到 Microsoft 365 组的 SharePoint 网站等。PnP PowerShell 脚本还将显示所有 SharePoint Online 网站的创建日期。

如果您是 PnP PowerShell 新手,请首先使用下面的 cmdlet 安装它,或者查看这篇文章,我已在其中逐步解释了它。

Install-Module -Name PnP.PowerShell -Force -AllowClobber

使用 PnP PowerShell 获取所有 SharePoint Online 网站

首先,让我向您展示如何使用 PnP PowerShell 检索所有 SharePoint 网站。它将显示站点 URL 和创建日期。

# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive

# Retrieve all sites
$sites = Get-PnPTenantSite

# Output all sites with URL
Write-Output "All SharePoint Online Sites:"
$sites | ForEach-Object {
    Write-host "Site Title:" $_.Title -"Site URL: " $_.URL
}

我执行了上面的脚本,您可以在下面的屏幕截图中看到输出:

[玩转系统] 如何使用 PnP PowerShell 获取所有 SharePoint Online 站点?

如果你想导出到Excel文件,那么你可以修改脚本如下:

# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive

# Retrieve all sites
$sites = Get-PnPTenantSite

# Prepare data for export
$siteData = $sites | ForEach-Object {
    [PSCustomObject]@{
        Title       = $_.Title
        URL         = $_.Url   
        OwnernName =  $_.OwnerEmail
    }
}

# Export data to Excel
$siteData | Export-Excel -Path "C:\MyNewFolder\SharePointSites.xlsx" -AutoSize -Title "SharePoint Online Sites"

阅读使用 PnP PowerShell 检查 SharePoint 网站是否存在

使用 PnP PowerShell 获取所有 SharePoint Online Teams 网站

在某些情况下,您可能只想使用 PnP PowerShell 从 11SharePoint Online 获取所有团队网站。

下面是一个完整的 PowerShell 脚本,用于将所有现代团队网站连接到 Microsoft 365 组。

# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive

# Retrieve all sites
$Sites = Get-PnPTenantSite -Template GROUP#0

Write-Output "Group Connected Team Sites:"
# Output all sites with URL
$Sites | ForEach-Object {
    Write-host "Site Title:" $_.Title -"Site URL: " $_.URL
}

您可以看到下面的屏幕截图,它显示了所有组连接的团队网站,因为我提供了 -Template 作为 GROUP#0。

[玩转系统] 如何使用 PnP PowerShell 获取所有 SharePoint Online 站点?

以下是使用 PnP PowerShell 获取所有 SharePoint Online 团队网站(包括连接到 Microsoft 365 组的网站)的完整脚本。

# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive

# Retrieve all sites
$sites = Get-PnPTenantSite
$teamSites = $sites | Where-Object { $_.GroupId -ne $null }
# Output all sites with URL
Write-Output "All SharePoint Online Sites:"
$teamSites | ForEach-Object {
    Write-host "Site Title:" $_.Title -"Site URL: " $_.URL
}

我使用 VS code 执行上述 PowerShell 脚本后,您可以在下面的屏幕截图中看到输出。

[玩转系统] 如何使用 PnP PowerShell 获取所有 SharePoint Online 站点?

使用 PnP PowerShell 获取所有 SharePoint Online 通信网站

在 SharePoint Online 中使用 PnP PowerShell 获取所有通信站点确实很容易。您只需在 Get-PnPTenantSite 中传递模板,例如: Get-PnPTenantSite -Template SITEPAGEPUBLISHING#0

这是完整的脚本。

# Connect to SharePoint Online
$TenantAdminUrl = "https://szg52-admin.sharepoint.com"
Connect-PnPOnline -Url $TenantAdminUrl -Interactive

# Retrieve all sites
$communicationSites = Get-PnPTenantSite -Template SITEPAGEPUBLISHING#0

Write-Output "Communication Sites:"
# Output all sites with URL
$communicationSites | ForEach-Object {
    Write-host "Site Title:" $_.Title -"Site URL: " $_.URL
}

我执行了上面的 PowerShell 脚本,您可以在下面的屏幕截图中看到确切的输出:

[玩转系统] 如何使用 PnP PowerShell 获取所有 SharePoint Online 站点?

我希望您现在了解如何使用 PnP PowerShell 获取所有 SharePoint Online 通信网站。

结论

在本教程中,我解释了如何使用 PnP PowerShell 获取所有 SharePoint 网站。还有:

  • 使用 PnP PowerShell 将所有现代团队网站连接到 Microsoft 365 组
  • 使用 PnP PowerShell 获取所有通信站点。

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

取消回复欢迎 发表评论:

关灯