Задача: На сервере 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"
Обратная ссылка: SharePoint 2013 – Замена значений гиперссылок хранимых в колонке списка « ИТ Блог Алексея Максимова /