SharePoint 2010 — Замена значений гиперссылок хранимых в колонке списка

imageЗадача: На сервере SharePoint 2010 создан список (List), который используется как хранилище ссылок на файлы, доступные для скачивания с этого веб-сервера. Одной из колонок такого списка является гиперссылка. Возникает ситуация когда меняется URL этого веб-сервера и все элементы списка в этой колонке необходимо изменить.

Решение: На веб-сервере выполним Powershell скрипт, который заменит определённое старое значение в колонке с гиперссылками на новое

 

# $MyListName — Имя списка в сайте

# $MyColumnName — Имя колонки с значением типа URL

# $URLOld — Искомое значение существующего URL которое надо изменить

# $URLNew — Новое значение URL на которое производим замену

#

$MySiteUrl = "http://new-server.holding.com"

$MyListName = "Программное обеспечение"

$MyColumnName = "URL"

$URLOld = "http://old-server.holding.com"

$URLNew = "http://new-server.holding.com"

#

$snapin = Get-PSSnapin | Where-Object {$_.Name -eq ‘Microsoft.SharePoint.Powershell’}

if ($snapin -eq $null) {

  Write-Host "Загрузка оснастки SharePoint Powershell"

  Add-PSSnapin "Microsoft.SharePoint.Powershell"

}

#                  

$spSite = new-object Microsoft.SharePoint.SPSite($MySiteUrl)

$spWeb = $spSite.OpenWeb()

$spList = $spWeb.Lists[$MyListName]

$spitems = $splist.items

$i = 0

foreach($item in $spitems){

  [Microsoft.SharePoint.SPListItem]$spListItem = $item  

  if ($spListItem[$MyColumnName] -like "*$URLOld*")

  {   

    $i = $i + 1   

    $fldUrl= new-object Microsoft.SharePoint.SPFieldUrlValue($Item[$MyColumnName])       

    $fldUrl.URL = $fldUrl.URL.Replace($URLOld, $URLNew)  

    $item[$MyColumnName] = $fldUrl

    $item.update()   

    Write-Host $item["Title"] $fldUrl

  } 

}

Write-Host "Изменено" $i "записей" -foregroundcolor "green"

Добавить комментарий