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

如何修改PowerShell脚本正确获取SharePoint Online站点隐私状态

修复SharePoint Online站点隐私状态导出脚本

问题根源

原脚本错误使用了$siteProperties.Status属性,这个属性代表的是站点的激活状态(Active/Inactive),而非站点的隐私权限设置(公开/私有),因此所有正常运行的站点都被错误标记为“公开”。

正确的脚本修改方案

我们需要读取Get-PnPTenantSite返回对象中的Privacy属性,该属性直接存储了站点的隐私状态,值为Public或Private。修改后的完整脚本如下:

# 连接到SharePoint Online管理员中心(建议使用管理员URL而非普通站点)
Connect-PnPOnline -Url https://yourtenant-admin.sharepoint.com -UseWebLogin

# 获取租户内所有站点(包含所有类型站点,可按需添加过滤参数)
$sites = Get-PnPTenantSite -IncludeAll

# 初始化存储报告的数组
$sitePrivacyReport = @()

# 遍历每个站点
foreach ($site in $sites) {
    # 直接从已获取的站点对象中读取隐私状态,无需重复调用Get-PnPTenantSite
    $privacy = switch ($site.Privacy) {
        "Public" { "公开" }
        "Private" { "私有" }
        default { "未知状态" }
    }

    # 构造站点信息对象
    $siteInfo = [PSCustomObject]@{
        站点标题 = $site.Title
        站点URL = $site.Url
        隐私状态 = $privacy
    }
    $sitePrivacyReport += $siteInfo
}

# 定义输出路径
$outputPath = "C:\Users\USERNAME\Downloads\SharePoint_Site_Privacy_Report.csv"

# 导出为CSV文件(指定编码为UTF-8避免中文乱码)
$sitePrivacyReport | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8

Write-Host "报告已保存至: $outputPath"

# 断开连接
Disconnect-PnPOnline

关键修改说明

  • 连接URL优化:使用租户管理员URL(https://yourtenant-admin.sharepoint.com)而非普通站点,确保获取所有站点的完整权限。
  • 直接读取隐私属性:无需重复调用Get-PnPTenantSite,直接从$site对象中读取Privacy属性,提升脚本执行效率。
  • 中文友好处理:将英文状态值转换为中文,同时指定CSV编码为UTF-8,避免导出后中文乱码。
  • 添加-IncludeAll参数:确保获取所有类型的站点(如团队站点、通信站点等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:25:54