XPS 是由 Microsoft 开发的类似 PDF 的文档格式。虽然它并没有大规模使用,但它仍然是一种打印信息到文件的很好的内部格式。要无人值守地打印到 XPS 文件,首先您需要设置一个新的打印机,该打印机将自动打印到一个指定的输出文件:
1 2 3 4 5 6
|
$OutPath = "$env:temp\out.xps" $PrinterName = "XPSPrinter" Add-PrinterPort -Name $OutPath Add-Printer -Name $PrinterName -DriverName 'Microsoft XPS Document Writer v4' -PortName $OutPath
|
请确保 XPS 查看器已经安装:
1 2
| Enable-WindowsOptionalFeature -Online -FeatureName Xps-Foundation-Xps-Viewer -NoRestart
|
基于以上的准备工作,现在要将输出结果自动打印到 XPS 文件非常简单。以下是一个日常使用的打印函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| function Out-PrinterXPS ($Path = $(Read-Host -Prompt 'XPS document path to create')) { $PrinterName = "XPSPrinter" $OutPath = "$env:temp\out.xps"
$exists = Test-Path -Path $OutPath if ($exists) { Remove-Item -Path $OutPath }
$input | Out-Printer -Name $PrinterName do { Start-Sleep -Milliseconds 500 $exists = Test-Path -Path $OutPath } while (!$exists)
Move-Item -Path $OutPath -Destination $Path -Force }
|
让我们试试使用它!以下是一行在桌面上创建系统清单报告的代码:
1 2 3 4 5 6 7 8
| $Path = "$home\desktop\inventar.xps"
systeminfo.exe /FO CSV | ConvertFrom-Csv | Out-PrinterXPS -Path $Path
Invoke-Item -Path $Path
|