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

SharePoint Online:PowerShell批量映射爬网属性至可细化字符串托管属性

SharePoint Online 爬网属性到可细化托管属性映射的PowerShell实现方案

方案一:使用PnP PowerShell(推荐)

PnP PowerShell已支持直接操作搜索架构,无需依赖UI,适合多站点批量场景。需确保安装最新版本的PnP.PowerShell模块。

步骤及示例代码

  1. 安装/更新PnP模块
Install-Module -Name PnP.PowerShell -Force -AllowClobber
  1. 连接到租户管理员中心
Connect-PnPOnline -Url https://<你的租户>-admin.sharepoint.com -Interactive
  1. 映射爬网属性到可细化托管属性
# 配置参数
$managedPropName = "RefinableString01" # 优先使用租户默认的可细化字符串属性(RefinableString01~100)
$crawledPropName = "ows_CustomColumn" # 目标爬网属性名称(如自定义列表列的爬网属性)
$crawledPropCategory = "SharePoint" # 爬网属性所属类别

# 获取托管属性
$managedProp = Get-PnPManagedProperty -Identity $managedPropName

# 若托管属性不存在则创建(建议使用默认可细化属性,此步骤可选)
if (-not $managedProp) {
    $managedProp = New-PnPManagedProperty -Name $managedPropName -Type String -Refinable $true -Queryable $true
}

# 获取目标爬网属性
$crawledProp = Get-PnPCrawledProperty -Name $crawledPropName -Category $crawledPropCategory

# 添加映射
if ($crawledProp) {
    Add-PnPManagedPropertyMapping -ManagedProperty $managedProp -CrawledProperty $crawledProp
    Write-Host "已成功将爬网属性 $crawledPropName 映射到托管属性 $managedPropName"
} else {
    Write-Host "未找到指定的爬网属性 $crawledPropName"
}

方案二:使用CSOM封装PowerShell脚本

若PnP模块无法满足需求,可直接通过SharePoint CSOM操作搜索架构,实现映射逻辑。

示例代码

# 加载SharePoint CSOM程序集(需确保路径正确)
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Search.dll"

# 配置参数
$tenantAdminUrl = "https://<你的租户>-admin.sharepoint.com"
$username = "admin@<你的租户>.onmicrosoft.com"
$password = ConvertTo-SecureString "<你的密码>" -AsPlainText -Force
$managedPropName = "RefinableString01"
$crawledPropName = "ows_CustomColumn"
$crawledPropCategory = "SharePoint"

# 创建客户端上下文
$context = New-Object Microsoft.SharePoint.Client.ClientContext($tenantAdminUrl)
$context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password)

# 获取搜索架构
$searchSchema = [Microsoft.SharePoint.Client.Search.Administration.SearchSchema]::GetSearchSchema($context)
$context.Load($searchSchema)
$context.ExecuteQuery()

# 获取或创建托管属性
$managedProp = $searchSchema.GetManagedProperty($managedPropName)
$context.Load($managedProp)
$context.ExecuteQuery()

if (-not $managedProp) {
    $propCreationInfo = New-Object Microsoft.SharePoint.Client.Search.Administration.ManagedPropertyCreationInformation
    $propCreationInfo.Name = $managedPropName
    $propCreationInfo.Type = [Microsoft.SharePoint.Client.Search.Administration.ManagedPropertyType]::Text
    $propCreationInfo.Refinable = $true
    $propCreationInfo.Queryable = $true
    $managedProp = $searchSchema.CreateManagedProperty($propCreationInfo)
    $context.Load($managedProp)
    $context.ExecuteQuery()
}

# 获取目标爬网属性
$crawledProps = $searchSchema.GetCrawledProperties($crawledPropCategory, $crawledPropName, $null)
$context.Load($crawledProps)
$context.ExecuteQuery()
$crawledProp = $crawledProps | Where-Object { $_.Name -eq $crawledPropName }

# 添加映射并更新
if ($crawledProp) {
    $mapping = New-Object Microsoft.SharePoint.Client.Search.Administration.CrawledPropertyMapping
    $mapping.CrawledPropertyName = $crawledProp.Name
    $mapping.CrawledPropertyCategory = $crawledProp.CategoryName
    $managedProp.AddMapping($mapping)
    $managedProp.Update()
    $context.ExecuteQuery()
    Write-Host "映射操作完成"
} else {
    Write-Host "未找到指定的爬网属性"
}

# 释放上下文资源
$context.Dispose()

注意事项

  • 优先使用租户默认的RefinableStringXX系列属性,自定义托管属性可能需要额外配置才能正常参与搜索
  • 映射完成后需等待全量爬网或手动触发爬网,属性映射才会生效
  • 操作需具备SharePoint租户管理员权限
  • PnP PowerShell需升级至最新版本,旧版本可能缺失搜索架构相关cmdlet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 05:17:01