During data migration to move files from local drives to SharePoint Online, you may need to create a big number of libraries to anticipate the list (soft) threshold of 5,000 items.
B - PROBLEMS :
Creating libraries manually is tedious & a script to automate the process will be shared to ease your work.
C - SOLUTION:
Powershell script can be used at your own PC to create libraries automatically at any SharePoint Online site.
D - SOURCE CODE or BENCHMARK:
Pre-requisites:
- SharePoint DLLs saved at your PC & loaded to the script session.
- Source File which predefines all libraries in each row in the format of "Internal Name, External or Display Library Name".
- SharePoint Online Management Shell must be installed at your PC.
- Load the neccessary components
- Load your SharePoint tenant
- Initialize the creation task
# Load DLLs Add-Type -Path "D:\SharePoint\PowerShell\SPO-DLL\Microsoft.SharePoint.Client.dll" Add-Type -Path "D:\SharePoint\PowerShell\SPO-DLL\Microsoft.SharePoint.Client.Runtime.dll" Add-Type -Path "D:\SharePoint\PowerShell\SPO-DLL\Microsoft.SharePoint.Client.UserProfiles.dll" # Source File to be synced from SharePoint On-Prem to Online $sourcefile = "D:\Projects\Libraries.txt"
#variables that needs to be set before starting the script $siteURL = "https://anthonynhn.sharepoint.com/sites/fat/cs" $adminUrl = "https://anthonynhn-admin.sharepoint.com" $userName = "admin@anthonynhn.onmicrosoft.com" # Let the user fill in their password in the PowerShell window $password = Read-Host "Please enter the password for $($userName)" -AsSecureString
# set SharePoint Online credentials
$SPOCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName, $password)
# Creating client context object
$contextLocal = New-Object Microsoft.SharePoint.Client.ClientContext($siteURL)
$contextLocal.credentials = $SPOCredentials
$contextLocal.ExecuteQuery()
$listTemplate = 101 #doclib
Foreach ($line in [System.IO.File]::ReadLines($sourcefile)) {
$lib = New-Object Microsoft.SharePoint.Client.ListCreationInformation
$libInput = $line -split ',';
# set the Internal Name
$lib.Url = $libInput[0]
# set the Lib Title
$lib.title = $libInput[1]
$lib.TemplateType = $listTemplate
$list = $contextLocal.web.lists.add($lib)
$contextLocal.load($list)
#send the request containing all operations to the server
try{
$contextLocal.executeQuery()
write-host "info: Created $($listTitle)" -foregroundcolor green
}
catch{
write-host "info: $($_.Exception.Message)" -foregroundcolor red
}
}
No comments:
Post a Comment