Modificare SharePoint online via Powershell, Sharepoint Client Object Model e CAML
Forse non tutti sanno che…
è possibile leggere, modificare e creare oggetti su SharePoint online direttamente da PowerShell. Il seguente codice effettua una connessione ad un sito SharePoint, ottiene tutti gli elementi di una lista e, per gli elementi che hanno valorizzato la colonna “Mod” a 1, modifica le colonne Created By ed Edited By:
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
$siteUrl = "urlsito" $password = Read-Host -Prompt "Enter password" -AsSecureString
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials("admin email", $password)
$ctx.Credentials = $credentials
$web = $ctx.Web $ctx.Load($web)
$ctx.ExecuteQuery()
Write-Host $web.Title //per leggere il titolo
$lists=$ctx.Web.Lists;
$ctx.Load($lists); $ctx.ExecuteQuery();
foreach($list in $lists) { Write-Host "List Title: " $list.Title; }
$lista=$ctx.Web.Lists.GetByTitle("Nome lista")
$camlQuery = new-object Microsoft.SharePoint.Client.CamlQuery;
$camlQuery.ViewXml = "<View><Query><Where><Eq><FieldRef Name='Mod' /><Value Type='int'>1</Value></Eq></Where></Query></View>";
$listItems = $lista.GetItems($camlQuery); $ctx.Load($listItems); $ctx.ExecuteQuery();
foreach($item in $listItems) { Write-Host "Title: " $item["ID"] }
$user = "60;#Nome Cognome"
foreach($item in $listItems) { Write-Host "Title: " $item["ID"]; $item['Author'] = $user; $item['Mod'] = ""; $item['Editor'] = $user; $item.Update() }
$ctx.ExecuteQuery()
I comandi dovranno essere eseguiti da una SharePoint Online Management Shell ed è necessario installare sul pc SharePoint Server 2013 Client Components SDK (scaricabile da qui: http://www.microsoft.com/en-us/download/details.aspx?id=35585 )