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 } }