Powershell Word Document Page Numbers

$Doc = $Word.Documents.Add();
$Section = $Doc.Sections.Item(1);
$Header = $Section.Headers.Item(1);
$Header.Range.Text = "document1_${FirstName}_${SecondName}_${StaffID}.doc";

$objRange = $Doc.Range()
$objRange.Font.Name = “Arial”
$objRange.Font.Size = 12

$Doc.SaveAs("$fileserver\document1_${FirstName}_${SecondName}_${StaffID}.docx");
$Doc.Close();

I am using this script to create word documents and deploy them to staff areas on a fileserver. Is there a way to add page numbers into the documents?


The easiest way of doing this is as below:

$Word = New-Object -ComObject word.application
$word.Visible = $false

$Doc = $Word.Documents.Add()
$Section = $Doc.Sections.Item(1)
$Header  = $Section.Headers.Item(1)
$Header.Range.Text = "document1_${FirstName}_${SecondName}_${StaffID}.docx"

$objRange = $Doc.Range()
$objRange.Font.Name = "Arial"
$objRange.Font.Size = 12

# ad a pagenumber (for demo centered to the page width)
# for other values see https://docs.microsoft.com/en-us/office/vba/api/word.wdpagenumberalignment
$wdAlignPageNumberCenter = 1
[void]$Section.Footers(1).PageNumbers.Add($wdAlignPageNumberCenter)

$Doc.SaveAs("$fileserver\document1_${FirstName}_${SecondName}_${StaffID}.docx")
$Doc.Close()

# IMPORTANT  Cleanup COM objects after use
$Word.Quit()

$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($objRange)
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Section)
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Header)
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Word)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()