2010年12月17日金曜日

◆プリンターを指定して印刷する2

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 件のコメント:

コメントを投稿