SharePoint Population Script V2

Summary

This is my 2nd version of SharePoint Population Script with a few minor changes.

  1. Removed the Hosts file and host header creation to simplify the process.
  2. The new script will only create a single DB.
  3. A new Web Application using the server host name over a different port is now allowed.
  4. A Modern Team Site will be created.

What is looks like

Here is an example of running the script:

How many Sites should be created?: 2
How many Lists should be created?: 5
How many Items in each list?: 10
How many Documents should be created?: 5
Specify the full URL of the new SharePoint Site, without http://. Example: contoso, contoso.local or www.contoso.com: spwfe
Enter your SQL Server Name: sql
Name of the new Content DB: wss_content_Test_db2
Enter the SP Managed Account. Example: contoso\spadmin: contoso\spservice
Enter a name for the new Web App: WebApp Test2
What port number do you want to use?: 6000
Enter a name for the new AppPool: WebApp-Test2-AppPool
Is this a 2010 Farm Y/N?: N
The new Web Application spwfe is being created. Please stand by...
The new Content Database wss_content_Test_db2 is being created. Please stand by...
The new Root Site http://spwfe:6000 is being created. Please stand by...

Url                                                     CompatibilityLevel  
---                                                     ------------------  
http://spwfe:6000                                       15                  
Creating document: /Shared Documents/TestDocument1.csv ...
Creating document: /Shared Documents/TestDocument2.csv ...
Creating document: /Shared Documents/TestDocument3.csv ...
Creating document: /Shared Documents/TestDocument4.csv ...
Creating document: /Shared Documents/TestDocument5.csv ...

Guid : aa53a958-10f6-4d99-95a5-00c1c369be00

####################################
List 1 created in http://spwfe:6000
####################################
Item: 1 created in list: 1
##############################
Item: 2 created in list: 1
##############################
Item: 3 created in list: 1
##############################
Item: 4 created in list: 1
##############################
Item: 5 created in list: 1
##############################
Item: 6 created in list: 1
##############################
Item: 7 created in list: 1
##############################
Item: 8 created in list: 1
##############################
Item: 9 created in list: 1
##############################
Item: 10 created in list: 1
##############################

Guid : 7ad3241e-3d9a-4a5b-b81f-d66fd458ef5e

####################################
List 2 created in http://spwfe:6000
####################################
Item: 1 created in list: 2
##############################
Item: 2 created in list: 2
##############################
Item: 3 created in list: 2
##############################
Item: 4 created in list: 2
##############################
Item: 5 created in list: 2
##############################
Item: 6 created in list: 2
##############################
Item: 7 created in list: 2
##############################
Item: 8 created in list: 2
##############################
Item: 9 created in list: 2
##############################
Item: 10 created in list: 2
##############################

Guid : b033583e-bd9b-49a0-9eb3-63c40f843582

####################################
List 3 created in http://spwfe:6000
####################################
Item: 1 created in list: 3
##############################
Item: 2 created in list: 3
##############################
Item: 3 created in list: 3
##############################
Item: 4 created in list: 3
##############################
Item: 5 created in list: 3
##############################
Item: 6 created in list: 3
##############################
Item: 7 created in list: 3
##############################
Item: 8 created in list: 3
##############################
Item: 9 created in list: 3
##############################
Item: 10 created in list: 3
##############################

Guid : a5da8fb0-a7c6-4f1e-ba8d-79cf79b73044

####################################
List 4 created in http://spwfe:6000
####################################
Item: 1 created in list: 4
##############################
Item: 2 created in list: 4
##############################
Item: 3 created in list: 4
##############################
Item: 4 created in list: 4
##############################
Item: 5 created in list: 4
##############################
Item: 6 created in list: 4
##############################
Item: 7 created in list: 4
##############################
Item: 8 created in list: 4
##############################
Item: 9 created in list: 4
##############################
Item: 10 created in list: 4
##############################

Guid : 8f2468cb-107f-44a8-872b-6a49f925ba72

####################################
List 5 created in http://spwfe:6000
####################################
Item: 1 created in list: 5
##############################
Item: 2 created in list: 5
##############################
Item: 3 created in list: 5
##############################
Item: 4 created in list: 5
##############################
Item: 5 created in list: 5
##############################
Item: 6 created in list: 5
##############################
Item: 7 created in list: 5
##############################
Item: 8 created in list: 5
##############################
Item: 9 created in list: 5
##############################
Item: 10 created in list: 5
##############################
####################
Creating Sub Site 1
####################


Guid : 59247c47-36d5-402f-9f55-53009b7e3677

########################################
List 1 created in http://spwfe:6000/1
########################################
Item: 1 created in list: 1
################################
Item: 2 created in list: 1
################################
Item: 3 created in list: 1
################################
Item: 4 created in list: 1
################################
Item: 5 created in list: 1
################################
Item: 6 created in list: 1
################################
Item: 7 created in list: 1
################################
Item: 8 created in list: 1
################################
Item: 9 created in list: 1
################################
Item: 10 created in list: 1
################################

Guid : b2176570-ed99-4d0b-a1cf-4cdb54762141

########################################
List 2 created in http://spwfe:6000/1
########################################
Item: 1 created in list: 2
################################
Item: 2 created in list: 2
################################
Item: 3 created in list: 2
################################
Item: 4 created in list: 2
################################
Item: 5 created in list: 2
################################
Item: 6 created in list: 2
################################
Item: 7 created in list: 2
################################
Item: 8 created in list: 2
################################
Item: 9 created in list: 2
################################
Item: 10 created in list: 2
################################

Guid : 0b271e12-7fb0-48e3-82a2-dcaa7c628df5

########################################
List 3 created in http://spwfe:6000/1
########################################
Item: 1 created in list: 3
################################
Item: 2 created in list: 3
################################
Item: 3 created in list: 3
################################
Item: 4 created in list: 3
################################
Item: 5 created in list: 3
################################
Item: 6 created in list: 3
################################
Item: 7 created in list: 3
################################
Item: 8 created in list: 3
################################
Item: 9 created in list: 3
################################
Item: 10 created in list: 3
################################

Guid : 65b36498-b429-405a-a86f-9e38be56eb5c

########################################
List 4 created in http://spwfe:6000/1
########################################
Item: 1 created in list: 4
################################
Item: 2 created in list: 4
################################
Item: 3 created in list: 4
################################
Item: 4 created in list: 4
################################
Item: 5 created in list: 4
################################
Item: 6 created in list: 4
################################
Item: 7 created in list: 4
################################
Item: 8 created in list: 4
################################
Item: 9 created in list: 4
################################
Item: 10 created in list: 4
################################

Guid : 17b22a0e-aaa9-47b5-9d6f-f702110d9620

########################################
List 5 created in http://spwfe:6000/1
########################################
Item: 1 created in list: 5
################################
Item: 2 created in list: 5
################################
Item: 3 created in list: 5
################################
Item: 4 created in list: 5
################################
Item: 5 created in list: 5
################################
Item: 6 created in list: 5
################################
Item: 7 created in list: 5
################################
Item: 8 created in list: 5
################################
Item: 9 created in list: 5
################################
Item: 10 created in list: 5
################################
####################
Creating Sub Site 2
####################


Creating document: /2/Shared Documents/TestDocument1.csv ...
Creating document: /2/Shared Documents/TestDocument2.csv ...
Creating document: /2/Shared Documents/TestDocument3.csv ...
Creating document: /2/Shared Documents/TestDocument4.csv ...
Creating document: /2/Shared Documents/TestDocument5.csv ...

Guid : 9b5e80ef-ccde-42af-a5d6-e2365e79dfcf

########################################
List 1 created in http://spwfe:6000/2
########################################
Item: 1 created in list: 1
################################
Item: 2 created in list: 1
################################
Item: 3 created in list: 1
################################
Item: 4 created in list: 1
################################
Item: 5 created in list: 1
################################
Item: 6 created in list: 1
################################
Item: 7 created in list: 1
################################
Item: 8 created in list: 1
################################
Item: 9 created in list: 1
################################
Item: 10 created in list: 1
################################

Guid : 34cc51c3-cccd-49b6-b252-9fe1fc5c6c3c

########################################
List 2 created in http://spwfe:6000/2
########################################
Item: 1 created in list: 2
################################
Item: 2 created in list: 2
################################
Item: 3 created in list: 2
################################
Item: 4 created in list: 2
################################
Item: 5 created in list: 2
################################
Item: 6 created in list: 2
################################
Item: 7 created in list: 2
################################
Item: 8 created in list: 2
################################
Item: 9 created in list: 2
################################
Item: 10 created in list: 2
################################

Guid : b1facba1-93ff-44da-9e7f-a0d3e81d118f

########################################
List 3 created in http://spwfe:6000/2
########################################
Item: 1 created in list: 3
################################
Item: 2 created in list: 3
################################
Item: 3 created in list: 3
################################
Item: 4 created in list: 3
################################
Item: 5 created in list: 3
################################
Item: 6 created in list: 3
################################
Item: 7 created in list: 3
################################
Item: 8 created in list: 3
################################
Item: 9 created in list: 3
################################
Item: 10 created in list: 3
################################

Guid : 747d479d-fbec-4e4c-94d1-7ef34f0ee6b1

########################################
List 4 created in http://spwfe:6000/2
########################################
Item: 1 created in list: 4
################################
Item: 2 created in list: 4
################################
Item: 3 created in list: 4
################################
Item: 4 created in list: 4
################################
Item: 5 created in list: 4
################################
Item: 6 created in list: 4
################################
Item: 7 created in list: 4
################################
Item: 8 created in list: 4
################################
Item: 9 created in list: 4
################################
Item: 10 created in list: 4
################################

Guid : 0ffd5646-710c-4d84-818f-8a4a4c8f36cc

########################################
List 5 created in http://spwfe:6000/2
########################################
Item: 1 created in list: 5
################################
Item: 2 created in list: 5
################################
Item: 3 created in list: 5
################################
Item: 4 created in list: 5
################################
Item: 5 created in list: 5
################################
Item: 6 created in list: 5
################################
Item: 7 created in list: 5
################################
Item: 8 created in list: 5
################################
Item: 9 created in list: 5
################################
Item: 10 created in list: 5
################################
##########################################
Your Site population script has completed!
##########################################

The Script

# Load Microsoft.SharePoint.PowerShell
Add-PSSnapin Microsoft.SharePoint.Powershell -ea 0


#Script Parameters
$sitecount = (Read-Host "How many Sites should be created?")
$listcount = (Read-Host "How many Lists should be created?")
$itemcount = (Read-Host "How many Items in each list?")
$doccount = (Read-Host "How many Documents should be created?")
$url = (Read-Host "Specify the full URL of the new SharePoint Site, without http://. Example: contoso, contoso.local or www.contoso.com")
$sqlsvr = (Read-Host "Enter your SQL Server Name")
$sqldb = (Read-Host "Name of the new Content DB")
$siteowner = (Read-Host "Enter the SP Managed Account. Example: contoso\spadmin")
$sitename = (Read-Host "Enter a name for the new Web App")
$port = (Read-Host "What port number do you want to use?")
$apppool = (Read-Host "Enter a name for the new AppPool")
$is2010 = (Read-Host "Is this a 2010 Farm Y/N?")

#Adding 2010 capability
if ($is2010 -eq "Y"){
$docLibraryName = "Shared Documents"
}

if ($is2010 -eq "N"){
$docLibraryName = "Documents"
}

#Static Settings
$sourceDocumentPath = "$env:TEMP\temp\TestDocument.csv"
$newFilenamePrefix = "TestDocument"
$newFilenameExtension = ".csv"
$hostsfile = "$env:windir\System32\drivers\etc\hosts"
$spaccount = (Get-SPManagedAccount $siteowner)
$user2 = whoami

##################################
#Root WEB Creation and Population#
##################################

#Create the new web app
Write-Host "The new Web Application $url is being created. Please stand by..." -ForegroundColor Green
$site = "http://" + $url + ":" + $port
$webapp = New-SPWebApplication -Name $sitename -URL $site -ApplicationPool $apppool -ApplicationPoolAccount $spaccount -DatabaseServer $sqlsvr -DatabaseName $sqldb

#Create a new Content Database
Write-Host "The new Content Database $sqldb is being created. Please stand by..." -ForegroundColor Yellow


#Create Root Site
Write-Host "The new Root Site $site is being created. Please stand by..." -ForegroundColor Yellow
$SiteTemplate = "STS#3" #Modern Team Site
$Language = 1033
New-SPSite -Url $site -OwnerAlias $siteowner -SecondaryOwnerAlias $user2 -Template $SiteTemplate -Language $Language -ContentDatabase $sqldb


##################################
#Population Root Web#
##################################

#Test file creation
#make a new folder if it does not exist
$TARGETDIR = "$env:TEMP\temp"
if(!(Test-Path -Path $env:TEMP\temp)){
New-Item -ItemType directory -Path $TARGETDIR
}

dir | export-csv "$env:TEMP\temp\TestDocument.csv"


#defining WEB
$web = Get-SPWeb $site

#Create Documents
$docLibrary = $web.Lists[$docLibraryName]
$docLibraryUrl = $docLibrary.RootFolder.ServerRelativeUrl
$folderPathWithinDocLibrary = ""
$uploadfolder = $web.getfolder($docLibraryUrl + $folderPathWithinDocLibrary)

#Open file
$file = get-item $sourceDocumentPath
$fileStream = ([System.IO.FileInfo] (Get-Item $file.FullName)).OpenRead()

#Starting loop create docs in Root Library
for($d=1; $d -le $doccount; $d++)
{
$newFilePath = $docLibraryUrl + $folderPathWithinDocLibrary + "/" + $newFilenamePrefix+$d+$newFilenameExtension
write-host "Creating document: $newFilePath ..." -ForegroundColor Yellow
$spFile = $uploadfolder.Files.Add($newFilePath, [System.IO.Stream]$fileStream, $true)
}

#Start Loop for List creation based on $listcount in ROOT Library
for($l=1; $l -le $listcount; $l++)

#Create the Lists
{
$ListTemplate = $web.ListTemplates["Custom List"]
$web.Lists.Add("List $l","List $l",$listTemplate)
Write-Host "####################################" -ForegroundColor Green
write-host "List $l created in $site" -ForegroundColor Green
Write-Host "####################################" -ForegroundColor Green

# While creating lists put new items in it based on the $itemcount
if ($l -le $listcount )

{
#Start Loop for List Item creation in ROOT Library
for ($i=1; $i -le $itemcount; $i++)

{
#Create List Item
$list = $web.Lists["List $l"]
$newItem = $list.AddItem()
$newItem["Title"] = "Item $i"
$newItem.Update()
write-host "Item: $i created in list: $l" -ForegroundColor Yellow
Write-Host "##############################" -ForegroundColor Yellow
}}}

#################################
#Sub WEB Creation and Population#
#################################

#Start Loop for site creation
for($s=1; $s -le $sitecount ; $s++)
{
$SiteUrl = ""
$SiteUrl = $Site + "/"
$SiteUrl = $SiteUrl += $s

#Create Webs based on $sitecount
Write-Host "####################" -ForegroundColor Yellow
Write-Host "Creating Sub Site $s" -ForegroundColor Yellow
Write-Host "####################" -ForegroundColor Yellow

New-SPWeb $SiteUrl -Template $SiteTemplate -Name $s -UseParentTopNav -Language $Language
$web = Get-SPWeb $SiteUrl

#Create Documents
$docLibrary = $web.Lists[$docLibraryName]
$docLibraryUrl = $docLibrary.RootFolder.ServerRelativeUrl
$folderPathWithinDocLibrary = ""
$uploadfolder = $web.getfolder($docLibraryUrl + $folderPathWithinDocLibrary)

#Open file
$file = get-item $sourceDocumentPath
$fileStream = ([System.IO.FileInfo] (Get-Item $file.FullName)).OpenRead()

#Starting loop to create docs in Library
for($d=1; $d -le $doccount; $d++)
{
$newFilePath = $docLibraryUrl + $folderPathWithinDocLibrary + "/" + $newFilenamePrefix+$d+$newFilenameExtension
write-host "Creating document: $newFilePath ..." -ForegroundColor Yellow
$spFile = $uploadfolder.Files.Add($newFilePath, [System.IO.Stream]$fileStream, $true)
}

#Start Loop for List creation based on $listcount
for($l=1; $l -le $listcount; $l++)

#Create the Lists
{
$ListTemplate = $web.ListTemplates["Custom List"]
$web.Lists.Add("List $l","List $l",$listTemplate)

Write-Host "########################################" -ForegroundColor Green
write-host "List $l created in $SiteUrl" -ForegroundColor Green
Write-Host "########################################" -ForegroundColor Green

#Populate list items based on the $itemcount
if ($l -le $listcount )

{
#Start Loop for List Item creation
for ($i=1; $i -le $itemcount; $i++)

{
#Create List Item
$list = $web.Lists["List $l"]
$newItem = $list.AddItem()
$newItem["Title"] = "Item $i"
$newItem.Update()
write-host "Item: $i created in list: $l" -ForegroundColor Yellow
Write-Host "################################" -ForegroundColor Yellow
}}}}

#Close file stream
$fileStream.Close()

#Dispose web
$web.Dispose()

Write-Host "##########################################" -ForegroundColor Green
write-host "Your Site population script has completed!" -ForegroundColor Green
Write-Host "##########################################" -ForegroundColor Green

Leave a Reply