Podczas przenoszenia rozwiązań SharePoint pomiędzy tenantami Office 365 często zachodzi potrzeba migracji list i ich zawartości. Na szczęście tworzenie list i import danych możemy zautomatyzować. Jedną z metod jest wykorzystanie PowerShell i odpowiednich bibliotek CSOM. Objaśnienia kodu w komentarzach.
#Parametry $User = "LOGIN_ADMINISTRATORA_WITRYNY" #Login administratora witryny $SiteURL = "ADRES_URL_WITRYNY" #Adres URL witryny $ListTitle = "Miasta" #Nazwa listy $Path = "c:\skrypty\miasta.csv" #Ścieżka do pliku CSV #Podłączenie wymaganych bibliotek [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") #Uwierzytelnienie użytkownika $Password = Read-Host -Prompt "Please enter your password" -AsSecureString $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($User,$Password) $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Context.Credentials = $Creds #Funkcja dodająca kolumnę do listy function Provision-Field([Microsoft.SharePoint.Client.ClientContext]$Context,[string]$ListTitle,[string]$FieldSchema) { $list = $Context.Web.Lists.GetByTitle($ListTitle) $List.Fields.AddFieldAsXml($FieldSchema,$true,[Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldToDefaultView) $Context.Load($List) $Context.ExecuteQuery() } #Tworzenie listy $ListInfo = New-Object Microsoft.SharePoint.Client.ListCreationInformation $ListInfo.Title = $ListTitle $ListInfo.TemplateType = "100" $List = $Context.Web.Lists.Add($ListInfo) $List.Description = $ListTitle $List.Update() $Context.ExecuteQuery() #Tworzenie kolumny w liście Provision-Field $Context "Miasta" "<Field Type='Text' DisplayName='Mieszkańcy'/>" #Import danych z pliku CSV do listy $miasta = Import-Csv $Path -Delimiter ";" ForEach ($miasto in $miasta){ $ListItemInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation $Item = $List.AddItem($ListItemInfo) $Item["Title"] = $miasto.Miasto $Item["Mieszka_x0144_cy"] = $miasto.Mieszkańcy $Item.Update() $Context.ExecuteQuery() }
Efekt działania skryptu:
Przyjemnej pracy z SharePoint!