トップ回答者
1台のPCに複数のプリンタポートを作成したい

質問
-
いつも参考にさせていただいています。
業務PC(Windows7 x32)にプリンタポート(Standerd TCP/IP Port)を追加します。
(プリンタドライバについては別途考慮)
業務PCは200台程度存在しており、各PCに複数の新プリンタが追加されます。
グループポリシーや、ツール等で配布はできません。
PC一台づつ作業します。
下記info.txtを元に、powershellを利用して、GUIを使用することなく
プリンタポートを追加したいと考えています。
最終的にはバッチ化します。
まずはPC1台に対して1プリンタポートです。
[info.txt]
computername,printername,printerip
PC001,PR100,10.10.10.101
PC002,PR200,10.10.10.102
PC003,PR300,10.10.10.103
PC004,PR100,10.10.10.101
PC005,PR200,10.10.10.102
PC006,PR400,10.10.10.104
.
.
.
下記スクリプトにて実現させました。
(もっと簡単にできるよ、ってありましたら是非お願いします)
[portadd.ps1]
$Cscript = "cscript /Nologo C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnport.vbs"
$Hostname = $Env:ComputerName
$PrintIP = Select-String -Path .\info.txt -Pattern $Hostname | ForEach-Object { $($_ -Split",")[2]}
$PortAdd = "$Cscript -a -r $PrintIP -h $PrintIP -o raw"
Invoke-Expression $PortAdd
さて、本題ですが、下記info2.txtのように
1台のPCに複数のプリンタポートを追加するようなパターンが存在する場合です。
[info.txt]
computername,printername1,printerip1,printername2,printerip2,.,.
PC001,PR100,10.10.10.101
PC002,PR200,10.10.10.102
PC003,PR300,10.10.10.103,PR100,10.10.10.101
PC004,PR100,10.10.10.101,PR200,10.10.10.102
PC005,PR200,10.10.10.102,PR400,10.10.10.104
PC006,PR400,10.10.10.104,PR100,10.10.10.101
.
.
.
よい方法がありましたら、ご教授お願いいたします。
回答
-
単にポートの数だけprnport.vbsを複数回実行すれば良いと思うのですが、そのやり方についてお聞きになりたいということでしょうか?
あと、info.txtはヘッダがきちんと定義されたCSV形式と考えていいのでしょうか。でしたらImport-Csvコマンドレットを使うと楽かもしれません。
なお、prnport.vbsの中身ではWMIのWin32_TCPIPPrinterPort クラスを呼んでいるので、PowerShellから直接このクラスのオブジェクトを作ってやってもいいかもしれません。(Windows8/2012ではそれすら必要なく、Add-PrinterPortというコマンドレットを使えば一発だったりしますが)
- 回答としてマーク sumutaro 2015年4月20日 0:33
すべての返信
-
単にポートの数だけprnport.vbsを複数回実行すれば良いと思うのですが、そのやり方についてお聞きになりたいということでしょうか?
あと、info.txtはヘッダがきちんと定義されたCSV形式と考えていいのでしょうか。でしたらImport-Csvコマンドレットを使うと楽かもしれません。
なお、prnport.vbsの中身ではWMIのWin32_TCPIPPrinterPort クラスを呼んでいるので、PowerShellから直接このクラスのオブジェクトを作ってやってもいいかもしれません。(Windows8/2012ではそれすら必要なく、Add-PrinterPortというコマンドレットを使えば一発だったりしますが)
- 回答としてマーク sumutaro 2015年4月20日 0:33
-
牟田口様
返信遅くなりましたが、
info.txtはヘッダが定義されていますので、Import-Csvを使ってみました。
確かに楽ですね。
Add-PrinterPortですが、今回のPCはWindows7なので、今後の参考にさせていただきます。
info.txtを下記の様、ポート追加がない部分は「Null」に変更して、
[info.txt]
computername,printername1,printerip1,printername2,printerip2
PC001,PR100,10.10.10.101,Null,Null
PC002,PR200,10.10.10.102,Null,Null
PC003,PR300,10.10.10.103,PR100,10.10.10.101
PC004,PR100,10.10.10.101,PR200,10.10.10.102
PC005,PR200,10.10.10.102,PR400,10.10.10.104
PC006,PR400,10.10.10.104,PR100,10.10.10.101
最終的に下記の様にしてみました。
なんとかいけそうです。
有難うございました。$Hostname = $Env:ComputerName $PrintIP1 = Import-Csv .\info.txt | where computername -eq $Hostname | select printerip1 $PrintIP2 = Import-Csv .\info.txt | where computername -eq $Hostname | select printerip2 if($PrintIP1.printerip1 -eq "Null"){ Write-host " プリンタポート1なし" }else{ cscript /Nologo C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnport.vbs -a -r $PrintIP1.printerip1 -h $PrintIP1.printerip1 -o raw } if($PrintIP2.printerip2 -eq "Null"){ Write-host " プリンタポート2なし" }else{ cscript /Nologo C:\Windows\System32\Printing_Admin_Scripts\ja-JP\prnport.vbs -a -r $PrintIP2.printerip2 -h $PrintIP2.printerip2 -o raw }