Create Multiple Site Collections from a CSV using PnP script


Hello All,

Creating bulk site collections very normal use case, Please find the below PS Script to create multiple site collections from your CSV file.

#Config Parameters
$TenantUrl = Read-Host "Enter SharePoint tenant admin URL"
$CSVPath = "C:\Temp\SiteCollections.csv"

#Connect to Tenant
Connect-PnPOnline -url $TenantUrl -Credentials (Get-Credential) #or -UseWebLogin for MFA

Try {
#Get Site Collections to create from a CSV file
$SiteCollections = Import-Csv -Path $CSVPath

#Loop through csv and create site collections from each row
ForEach ($Site in $SiteCollections)
#Get Parameters from CSV

$Title = $Site.Title
$Url = $Site.Url
$Owner =$Site.Owner
$Template = $Site.Template
$StorageQuota = $Site.StorageQuota
$TimeZone = $Site.TimeZone

#Check if site exists already
$SiteExists = Get-PnPTenantSite | Where {$_.Url -eq $URL}
If ($SiteExists -eq $null)
#Create site collection
Write-host "Creating Site Collection:"$Site.URL -f Yellow
New-PnPTenantSite -Url $URL -Title $Title -Owner $Owner -Template $Template -TimeZone $TimeZone -RemoveDeletedSite -ErrorAction Stop
Write-host "`t Done!" -f Green
write-host "Site $($URL) exists already!" -foregroundcolor Yellow
Catch {
write-host -f Red "`tError:" $_.Exception.Message

1 Reply

@Kamal Pandey 


I get an error:

Creating Site Collection:
Error: Cannot bind argument to parameter 'Url' because it is null.


My headers in the csv are: Title;Url;Owner;Template;StorageQuota;Timezone

Any idea what I'm doing wrong?