ネット上にあまり情報が無かった(特にマージン設定とか)ので検索にかかる様残して置きます。
PowershellからOfficeで印刷をする際のページ設定について。
ここではExcelを例にしています。
Powershell
# Excelオブジェクトの作成
$excel = New-Object -ComObject Excel.Application
# 可視設定(Powershellからは$True/$False)で指定
$excel.Visible = $True
# 読み込みファイルパス取得、この例では同DIRのoutput.csvを指定
$excelFile = (Get-ChildItem "output.csv").FullName
# Excelを開く
$book = $excel.Workbooks.Open($excelFile)
# 1シート目を取得(インデックスは1から始まる)
$sheet = $book.Sheets(1)
# ここから印刷設定(PowershellでWithは使えない)
# ズーム設定。明示的にFalseにしないと印刷範囲が正しくならない事がある
$sheet.PageSetup.Zoom = $False
# 最上行を固定して印刷時に常時表示させる
$sheet.PageSetup.PrintTitleRows = "1:1"
# 幅に収まる様に自動でスケーリングする
$sheet.PageSetup.FitToPagesWide = 1
# 縦幅自動スケーリングを明示的に無効にする(0代入ではダメ)
$sheet.PageSetup.FitToPagesTall = $False
# 印刷向きを横に指定
$sheet.PageSetup.Orientation = 2
# 各種マージン指定。数値直で代入はエラーにならず反映もされない
$sheet.PageSetup.TopMargin = $excel.CentimetersToPoints(1)
$sheet.PageSetup.BottomMargin = $excel.CentimetersToPoints(0)
$sheet.PageSetup.LeftMargin = $excel.CentimetersToPoints(0)
$sheet.PageSetup.RightMargin = $excel.CentimetersToPoints(0)
$sheet.PageSetup.HeaderMargin = $excel.CentimetersToPoints(0)
$sheet.PageSetup.FooterMargin = $excel.CentimetersToPoints(0)
# ヘッダー&フッター追加
$sheet.PageSetup.LeftHeader = ""
$sheet.PageSetup.CenterHeader = ""
$sheet.PageSetup.RightHeader = "&P of &N"
$sheet.PageSetup.LeftFooter = ""
$sheet.PageSetup.CenterFooter = ""
$sheet.PageSetup.RightFooter = ""
# 印刷(Powershell上で括弧を省略するとエラーとなるケースが多いので注意)
$sheet.PrintOut()
使えるVBAコードはここ参考
https://learn.microsoft.com/ja-jp/office/vba/excel/concepts/workbooks-and-worksheets/formatting-and-vba-codes-for-headers-and-footers