You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PnP PowerShell获取SharePoint Online的所有Site对象

获取SharePoint Online所有站点的Site对象(PnP PowerShell)

你的问题出在Get-PnPSite需要先建立目标站点的连接上下文,直接调用Get-PnPSite -Url $site.url而没有先连接到该站点,会因为缺少上下文而失败。以下是修正后的实现方案:

步骤1:连接到租户管理站点

首先需要连接到你的SharePoint Online租户管理站点,获取全量站点列表:

# 替换为你的租户管理站点URL
Connect-PnPOnline -Url "https://yourtenant-admin.sharepoint.com" -Interactive

步骤2:循环获取每个站点的Site对象

遍历所有租户站点,对每个站点单独建立连接后,再获取Site对象:

$sites = Get-PnPTenantSite
$allSiteObjects = @()

foreach ($site in $sites) {
    try {
        # 连接到当前站点,跳过租户管理检查以避免权限报错
        Connect-PnPOnline -Url $site.Url -Interactive -SkipTenantAdminCheck
        # 获取当前站点的Site对象
        $siteObject = Get-PnPSite
        # 将对象存入数组,方便后续批量处理
        $allSiteObjects += $siteObject
        # 示例:输出站点核心信息
        Write-Host "站点标题: $($siteObject.Title) | URL: $($siteObject.Url)"
    }
    catch {
        Write-Warning "无法访问站点 $($site.Url): $_"
    }
}

关键说明

  • -SkipTenantAdminCheck:避免连接普通站点时触发不必要的租户权限检查,确保连接流程正常。
  • 异常处理:加入try/catch可以跳过无权限或不可访问的站点,防止整个循环中断。
  • 批量存储:将Site对象存入数组$allSiteObjects后,可统一进行后续的属性读取、配置修改等操作。

内容的提问来源于stack exchange,提问作者Blue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:52:05