Mass Create Word Documents Using PowerShell

I’m my other post,  I outlined how to create a bunch of folders in a Document Library.  In this post, I’ll explain how I then populated those folders with Word documents.

To stage this, I created a Document Library called BaseLibrary.  In BaseLibrary I uploaded a single Word document.  After uploading the document, make note of the ID of the document in the Library.  *To get the ID of the document, modify your default View, and add the ID column, click save.*

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
if(-not(Get-PSSnapin | where { $_.Name -eq "Microsoft.SharePoint.PowerShell"}))
{
      Add-PSSnapin Microsoft.SharePoint.PowerShell;
}
 
$site = Get-SPweb "http://sharepointed.com/taco"
 
$spListFrom = $site.lists["BaseLibrary"]
$iFrom = $spListFrom.GetItemById("1")
 
$mList=$site.Lists["Shared Documents"]
 
foreach($f in $mlist.Folders)
 {
 
$fName=$f.Name
 
$range = 1..500
 $count = $range.Count
 for($i=0; $i -lt $count; $i++)
 {
 $nName = "$fName$i.docx"
 $nURL = $site.Url+''+$f.Url+"/"+$nName
 $iFrom.CopyTo($nURL)
 }
 }
 
$site.dispose()

What I’m doing here is referencing the document with the ID of 1, from BaseLibrary.

Loop through all the folders in Shared Documents, in each folder, I’m doing a loop to copy the document into the folder, and create a new name for the document on each loop.

$nName = “$fName$i.docx”

$fname is the name of the folder we are working with.

$i is the count of the loop we are on.  Joining the two variables will create a unique file name.

$range = 1..500

To create more or less documents in each folder, adjust this range.  This example will create 500 documents in each folder.

Leave a Reply

Your email address will not be published. Required fields are marked *