Feb 16 2021 12:56 PM - edited Feb 16 2021 12:59 PM
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
}
Else
{
write-host "Site $($URL) exists already!" -foregroundcolor Yellow
}
}
}
Catch {
write-host -f Red "`tError:" $_.Exception.Message
}
Sep 22 2021 11:32 AM
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?