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

[玩转系统] SharePoint Online:如何使用 PowerShell 触发完全重新索引?

作者:精品下载站 日期:2024-12-14 14:54:59 浏览:15 分类:玩电脑

SharePoint Online:如何使用 PowerShell 触发完全重新索引?


要求: 使用 PowerShell 重新索引 SharePoint Online 网站。

如何重新索引 SharePoint 网站?

将已爬网属性映射到 SharePoint Online 中的新托管属性后,我们必须重新索引 SharePoint Online 网站。通常,每当您更改搜索架构时,您都应该重新索引站点。与 SharePoint 本地部署(我们使用搜索服务应用程序触发完整爬网)不同,我们无法通过 SharePoint Online 中的管理用户界面强制执行完整爬网。相反,我们必须访问每个站点并手动触发爬网,以确保所有内容都可以完全搜索。本文将探讨如何使用网站设置和 PowerShell 重新索引 SharePoint Online 网站。

要重新索引 SharePoint Online 网站,请执行以下操作:

  1. 转到站点设置 >> 在“搜索”标题下,单击搜索和离线可用性。
  2. 在“搜索和离线可用性”页面上的“重新索引”部分下,单击“重新索引”按钮并确认提示。

    [玩转系统] SharePoint Online:如何使用 PowerShell 触发完全重新索引?

请注意,我们无法控制抓取时间表! SharePoint Online 的目标是上传到搜索结果可用之间的时间间隔为 15 分钟到 1 小时。在重度环境使用的情况下,这个时间可以增加到六个小时!

使用 PowerShell 在 SharePoint Online 中重新索引网站

在幕后,当您从 SharePoint Online 站点单击“重新索引”时,名为“vti_searchversion”的属性会增加,以指示 SharePoint 指示需要重新索引该站点。因此,让我们使用 PowerShell 在 SharePoint Online 中重新索引网站。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Function to Reindex SharePoint Online Site (web)
Function Reindex-SPOWeb($WebURL)
{
    #Setup Credentials to connect
    $Cred= Get-Credential
    $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($WebURL)
    $Ctx.Credentials = $Credentials
    
    #Get the Search version from Property bag
    $Web = $Ctx.Web
    $Ctx.Load($Web)
    $Ctx.Load($Web.AllProperties)
    $Ctx.ExecuteQuery()

    [Int]$SearchVersion = 0
    #Get the Search Version Property - If exists
    If ($Web.AllProperties.FieldValues.ContainsKey("vti_searchversion") -eq $True)
    {
        $SearchVersion = $Web.AllProperties["vti_searchversion"]
    }
    #Increment Search Version
    $SearchVersion++
    $Web.AllProperties["vti_searchversion"] = $SearchVersion
    $web.Update()
    $Ctx.ExecuteQuery()

    Write-Host -f Green "Updated Search Version To: " $SearchVersion
}

#variable
$WebURL="https://Crescent.sharepoint.com/"

#Call the function to reindex
Reindex-SPOWeb -WebURL $WebURL

这标志着 SharePoint Online 中要重新索引的网站。

PowerShell 重新索引 SharePoint Online 网站集

让我们稍微更改一下脚本,以迭代网站集中的所有网站,从而在下一个爬网周期触发网站集中所有网站的重新索引。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Function to Reindex SharePoint Online Site (web)
Function Reindex-SPOWeb($WebURL)
{
    Try {
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($WebURL)
        $Ctx.Credentials = $Credentials
    
        #Get the Search version from Property bag
        $Web = $Ctx.Web
        $Ctx.Load($Web)
        $Ctx.Load($Web.Webs)
        $Ctx.Load($Web.AllProperties)
        $Ctx.ExecuteQuery()

        [Int]$SearchVersion = 0
        #Get the Search Version Property - If exists
        If ($Web.AllProperties.FieldValues.ContainsKey("vti_searchversion") -eq $True)
        {
            $SearchVersion = $Web.AllProperties["vti_searchversion"]
        }
        #Increment Search Version
        $SearchVersion++
        $Web.AllProperties["vti_searchversion"] = $SearchVersion
        $web.Update()
        $Ctx.ExecuteQuery()

        Write-Host -f Green "Updated Search Version To '$SearchVersion' on "$WebURL
    
        #Process all subsites of the current site
        ForEach($SubWeb in $Web.Webs)
        {
            Reindex-SPOWeb -WebURL $SubWeb.URL
        }
    }
    Catch {
        write-host -f Red "Error Setting Reindex Flag!" $_.Exception.Message
    }
}

#Site collection URL
$WebURL="https://Crescent.sharepoint.com"

#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

#Call the function to reindex
Reindex-SPOWeb -WebURL $WebURL

此 PowerShell 标记 SharePoint Online 网站以便在下一次爬网中重新建立索引。

PnP PowerShell 重新索引 SharePoint Online 网站

以下是如何使用 PnP PowerShell cmdlet Request-PnPReIndexWeb 请求重新索引 SharePoint Online 网站:


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)

#Get the Web 
$Web = Get-PnPWeb

#Request Reindex
Request-PnPReIndexWeb -Web $Web 

通过重新索引 SharePoint Online 网站,您可以确保可以通过搜索轻松发现和访问您的内容,从而帮助提高组织内的工作效率和协作。

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

取消回复欢迎 发表评论:

关灯