PowerShell: ◆プリンターを指定して印刷する。(Out-Printer)ではテキストファイルの印刷を行ったが、やはりOffice文書なども印刷したい。
それぞれCOMでアクセスして印刷しなくてもStart-Processコマンドレットを使うと印刷できるようだ。
ドキュメントを右クリックしてコンテキストメニューから印刷するのと同じ処理かと思われる。
Start-Processでは出力先はデフォルトプリンターになるので、デフォルトプリンターを変更し、印刷が終わったら元に戻す様にしてみた。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 | <# .SYNOPSIS 指定したパスのドキュメントを印刷する .DESCRIPTION Pathパラメータに指定したドキュメントを印刷する。 Listスイッチを付けると出力先プリンターをプロンプトする。 .EXAMPLE Mout-Printer2.ps1 -Path w:\test.docx w:\test.docxをデフォルトプリンターで印刷する。 .EXAMPLE Mout-Printer2.ps1 -Path w:\test.docx -List 出力先プリンターの一覧をプロンプトする。 #> param( [string]$path, [switch]$list ) if($list){ $printers = gwmi win32_printer 0..($printers.Count -1 ) | %{ if($printers[$_].default){$defaultPrinter = $printers[$_]} Write-Host (($_+1).ToString() + " : " + $printers[$_].name) -Fore Green } $printerNo = (Read-Host "出力するプリンター番号を指定してください") -as [int] if(($printerNo) -and ($printerNo -le $printers.Count)){ ($printers[$printerNo-1]).SetDefaultPrinter() | Out-Null }else{exit} } Start-Process -FilePath $path -Verb print -Wait if($list){$defaultPrinter.SetDefaultPrinter() | Out-Null } |
0 件のコメント:
コメントを投稿