Deprecated: Implicit conversion from float 1.1818181818181819 to int loses precision in /var/www/wp-content/mu-plugins/wp-login.php on line 13

Deprecated: Implicit conversion from float 1.074074074074074 to int loses precision in /var/www/wp-content/mu-plugins/wp-login.php on line 13

Deprecated: Implicit conversion from float 1.1818181818181819 to int loses precision in /var/www/wp-content/mu-plugins/wp-login.php on line 13
SharePoint Online : Exporting Lists using Remote PowerShell – ridhvi.in
Close

SharePoint Online : Exporting Lists using Remote PowerShell

Exporting list schema’s in to SharePoint across the environments is always tricky. With the deprecation of Sandbox solutions and no go for farm solutions, provisioning lists through PowerShell will always be a savior.

You can get the List Schema from Visual Studio by creating a list instance and copying the schema.xml
Even though the below approach through Script supports SharePoint Online, with few modifications it can serve On Prem as well.
The provisioning of lists through Power Shell script is explained in detail at the below.
Clear-Host
Write-Host "Enter SharPoint Online User name : Example ridhvi@contoso.com"
$UserName = "ridhvi.pudi@contoso.com"
$Password = "****"

$Url = "https://{siteurl}/sites/ridhvi/"

$listTemplateId=100

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")

Function Get-SPOContext([string]$Url,[string]$UserName,[string]$Password)
{
 Write-Host "Loading Context.."
 $SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
 $context = New-Object Microsoft.SharePoint.Client.ClientContext($Url)
 $context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
 return $context
}

Function Export-TeamInfo()
{
 $ClientContext = Get-SPOContext -Url $Url -UserName $UserName -Password $Password 
 # Get List
 $ListName = "WGSTeams"
 $List = $ClientContext.Web.Lists.GetByTitle($ListName) 
 $ClientContext.Load($List)
 $ClientContext.ExecuteQuery()
 #Adds an item to the list
 $InvFile="TeamsCSV.csv" 
 # Get Data from Inventory CSV File 
 $FileExists = (Test-Path $InvFile -PathType Leaf) 
 if ($FileExists) 
 { 
 "Loading $InvFile for processing…" 
 $CSVData = import-csv $InvFile 
 } 
 else 
 { 
 "$InvFile not found – stopping import!" 
 exit 
 } 
 # Loop Create List Item
 #Adds an item to the list
 $ListItemInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation 
 foreach ($row in $CSVData)
 {
 $item = $List.AddItem($ListItemInfo) 
 $item["Title"] = $row.Title
 $item["CommentCount"] = $row.CommentCount
 $item["LikeCount"] = $row.LikeCount
 $item["Logo"] = $row.Logo
 $item["DownloadLogo"] = $row.DownloadLogo
 $item["TeamLogo"] = $row.TeamLogo
 $item["DocumentDisplayLogo"] = $row.DocumentDisplayLogo
 $item["ShortDescription"] = $row.ShortDescription
 $item["Description"] = $row.Description
 $item.Update()
 $ClientContext.ExecuteQuery()
 }
}

Function Create-ListSchema([Microsoft.SharePoint.Client.ClientContext]$Context, [int]$listTemplateId,[string] $schemaXmlFilePath)
{ 
 $schemaXml = [xml] (Get-Content $schemaXmlFilePath)
 $template = $Context.Web.ListTemplates | WHERE { $_.ListTemplateTypeKind -eq $listTemplateId }
 $info = New-Object Microsoft.SharePoint.Client.ListCreationInformation
 $info.Title = $schemaXml.List.Title
 $info.Url = $schemaXml.List.Url
 $info.CustomSchemaXml = $schemaXml.OuterXml
 $info.TemplateType = $listTemplateId
 $info.TemplateFeatureId = $template.FeatureId
 $list = $Context.Web.Lists | where{$_.Title -eq $info.Title}
 if($list)
 {
 Write-Warning "List already exists!!. Deleting list "$info.Title
 $list.DeleteObject()
 $Context.ExecuteQuery()
 }
 Write-Host "Creating list.."$info.Title
 $list = $Context.Web.Lists.Add($info)
 $Context.ExecuteQuery()
 Write-Host "Success!!"
}
Function Export-SchemaFiles()
{
 $context = Get-SPOContext -Url $Url -UserName $UserName -Password $Password
 $Context.Load($Context.Web.Lists)
 $Context.Load($Context.Web.ListTemplates)
 $Context.ExecuteQuery()
 $ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path 
 $SchemaDir = $ScriptDir+"\Schemas\"
 #Write-Host "Current script directory is $SchemaDir"
 $files = Get-ChildItem $SchemaDir
 for ($i=0; $i -lt $files.Count; $i++)
 {
 $schemaXmlFilePath = $files[$i].FullName 
 Create-ListSchema -Context $context -listTemplateId 100 -schemaXmlFilePath $schemaXmlFilePath 
 } 
 $context.Dispose() 
}
Write-Host "Starting Export"

Export-SchemaFiles
#Export-TeamInfo

Write-Host "Export Completed successfully !!"
© 2024 ridhvi.in | WordPress Theme: Annina Free by CrestaProject.