使用 Powershell Out-Printer 到文件时控制输出位置

Control output location when using Powershell Out-Printer to a File

我有一个 Powershell 脚本,可以从服务器上的文件夹中检索所有图像文件(.jpg、.png)并将它们 "prints" 到一个文件,特别是使用特定打印驱动程序的 .prn 文件。所有这些都很好。问题是我不知道如何控制 "printing" 的输出去向,即它把生成的 .prn 文件放在哪里。他们总是转到我电脑上的图片文件夹。我希望将它们放入输入图像所在的同一服务器文件夹中。在上周,我搜索了 Powershell out-print、out-file 等我想尝试的所有组合,但到目前为止还没有找到解决方案。任何帮助,将不胜感激。这是我当前的脚本。

       $VerbosePreference = "Continue"
       add-type -AssemblyName microsoft.VisualBasic
       add-type -AssemblyName System.Windows.Forms
       $newext = ".prn"
       $Directory = "\192.168.30.46\resource\Item\"
       $files = Get-ChildItem -Path $Directory –File
       $focus = 2000
       for ($i=0; $i -lt 5; $i++) {
       $newfile = $files[$i].BaseName + $newext     
           Start-Process $files[$i].FullName -verb Print | out-printer -name "Page Segment Print File"  
           start-sleep -Milliseconds $focus
           [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
           start-sleep -Milliseconds 250
           [System.Windows.Forms.SendKeys]::SendWait($newfile)
           start-sleep -Milliseconds 250
           [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
           start-sleep -Milliseconds 1500
           $focus = 250
       }
       Write-Verbose "Print Files Generated"

创建定义的根位置并连接,以便完全定义输出位置。

$VerbosePreference = "Continue"
   add-type -AssemblyName microsoft.VisualBasic
   add-type -AssemblyName System.Windows.Forms
   $rootdir = "C:\Temp\"
   $newext = ".prn"
   $Directory = "\192.168.30.46\resource\Item\"
   $files = Get-ChildItem -Path $Directory –File
   $focus = 2000

   for ($i=0; $i -lt 5; $i++) {
   $newfile = $files[$i].BaseName + $newext     
       Start-Process $files[$i].FullName -verb Print | out-printer -name "Page Segment Print File"  
       start-sleep -Milliseconds $focus
   [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
   start-sleep -Milliseconds 250
   [System.Windows.Forms.SendKeys]::SendWait($(Join-Path $rootdir $newfile))
   start-sleep -Milliseconds 250
   [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
   start-sleep -Milliseconds 1500
   $focus = 250
}
Write-Verbose "Print Files Generated"`