Tworzenie listy, pól listy i wprowadzenie danych w PowerShell

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:

831

Przyjemnej pracy z SharePoint!

Powiązane wpisy...

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *