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

imageСкрипт для замены значений типа Ссылка в элементах списка, описанный ранее в заметке SharePoint 2010 – Замена значений гиперссылок хранимых в колонке списка, оптимизированный под использование с SharePoint 2013. По сути изменена только одна строчка скрипта.

# Замена значений во всех элементах списка в колонке типа URL 
# $MySiteUrl - Имя сайта SharePoint со списком 
# $MyListName - Имя списка в сайте
# $MyColumnName - Имя колонки с значением типа URL
# $URLOld - Искомое значение существующего URL которое надо изменить
# $URLNew - Новое значение URL на которое производим замену
# 
$MySiteUrl = "http://new-server.holding.com" 
$MyListName = "Программное обеспечение" 
$MyColumnName = "URL" 
$URLOld = "http://old-server.holding.com/HARD/" 
$URLNew = "http://new-server.holding.com/DriversList/" 
# 
$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= [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"

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