Il blog di Giuseppe Marchi - SharePoint MVP
NAVIGATION - SEARCH

Modificare la data di creazione e di modifica su elementi di liste SharePoint Online tramite Powershell

Quando si creano nuovi elementi o nuovi file all'interno di liste o document library SharePoint, le date di creazione e di modifica vengono salvate automaticamente dal sistema al momento dell'effettiva creazione dell'elemento/file e al momento dell’ultima modifica all'elemento/file.
I campi che vengono aggiornati sono i campi con internal name "Created" e "Modified".
Tramite le API del Client Object Model, abbiamo la possibilità di modificare tali date tramite uno script Powershell. Vediamo come.

$username = "yourusername@yourdomain.onmicrosoft.com" 
$password = "yourpassword" 
$url = "https://dev4side.sharepoint.com"
$listName = "your list name"
$itemId = 1
$securePassword = ConvertTo-SecureString $Password -AsPlainText -Force 
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"
$context = New-Object Microsoft.SharePoint.Client.ClientContext($url) 
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePassword) 
$context.Credentials = $credentials 
$list = $context.Web.Lists.GetByTitle($listName)
$item = $list.GetItemById($itemId)
$context.Load($item)
$context.ExecuteQuery()
$item["Modified"] = $date
$item["Created"] = $date
$item.Update()
$context.ExecuteQuery()
Write-Host "Item updated!" -ForegroundColor Green

Quella di modificare tali dati è una tecnica che risulta utile quando vogliamo migrare su SharePoint dei file presi dal file system, mantenendo le dati originali di creazione e modifica.
Vi ricordo che per poter eseguire questo script, è necessario:
- Scaricare le librerie aggiornate del Client Object Model
- Disporre di username e password di un utente che ha permessi di Full Control sulla lista che volete nascondere

Il medesimo codice, lasciando perdere il passaggio delle credenziali all'oggetto ClientContext, può essere eseguito on premise su farm SharePoint 2013 per raggiungere lo stesso risultato.

Spero vi possa essere utile.

blog comments powered by Disqus