質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

3427閲覧

プリンタの オプション構成を自動取得(更新)したい

kamikazelight

総合スコア305

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2018/10/10 01:17

編集2018/11/16 04:46

前提・実現したいこと

会社でプリンタの印刷設定が出来ない人が多いので
印刷設定ごとにプリンタを追加しなければならず
毎回苦労しているので
PowerShellでプリンタを設定したいです。
最終的には印刷設定まで自動化できたらなと思っています

とりあえずプリンタの追加と
通常使うプリンタの設定(Win10の設定で「Windowsで通常使うプリンターを管理する」にチェックが入っていると失敗する)
までは出来たので
まずはここでいったん妥協して印刷設定は手動でやろうと思ったのですが
そのままではオプション構成が取得されておらず追加の用紙トレイが印刷設定で選択できません。
プリンターのプロパティを表示してから再度印刷設定に戻ると選択できるようになるのですが
多数あるプリンターのプロパティをひとつづつ手動で表示するのは大変です。

どうしたらオプション構成を自動取得(更新)出来るのでしょうか?

プリンターのプロパティウィンドウを表示、までできれば それだけでずいぶん楽になるのですが
そういった操作はExplorerの操作になるのでしょうか?

発生している問題・エラーメッセージ

プリンタのオプション構成の自動取得ができない

該当のソースコード

powershell

1#CAD PC の セットアップを行う# 2 3$ErrorActionPreference = "Stop" 4$Error.Clear() 5 6try 7{ 8#初期処理# 9 if (!($PSScriptRoot -eq "")) 10 { 11 #カレントディレクトリをスクリプトパスに設定 12 Set-Location -Path($PSScriptRoot) 13 } 14 #ライブラリパスの作成# 15 $Library = "$(Convert-Path -Path $(Get-Location))\Library" 16 17 if (Test-Path -Path $Library) 18 { 19 #登録関数の削除 20 Remove-Item Function::_* 21 #ソースの取得 22 $SFuncs = $($(Get-ChildItem -Path $Library) | where {$_.Extension -eq ".ps1"} | foreach {$(Get-Content -Path $_.FullName) -join "`r`n"}) 23 #ソースの読み込み 24 $SFuncs | foreach {Invoke-Expression $_} 25 } 26 if ($(Get-Item function::_*).count -eq 0) 27 { 28 throw "関数が定義されていません。" 29 } 30 31#プリンターのセット# 32function _PrinterPut() 33{ 34 Param 35 ( 36 # INFファイル の パスを指定します。 37 [String] 38 $InfPath, 39 40 # ドライバ の 名前を指定します。。 41 [String] 42 $Drive, 43 44 # IPアドレスを示す文字列を指定します。 45 [String] 46 $IPAdd, 47 48 # プリンター名を指定します。 49 [String] 50 $Name 51 ) 52 53 #プリンタドライバーのインストール# 54 55 $PrinterDriverList=New-Object System.Management.ManagementClass("Win32_PrinterDriver") 56 57 $PrinterDriver=$PrinterDriverList.CreateInstance() 58 # プラットフォーム Windows NT x86 or Windows x64 59 $PrinterDriver.SupportedPlatform="Windows x64" 60 # バージョン 通常は 3 意味は win2k 61 $PrinterDriver.Version="3" 62 63 # プリンタードライバー名 infファイルに書かれている 64 $PrinterDriver.Name=$Drive 65 # infファイル infファイルの場所 66 $PrinterDriver.InfName=$InfPath 67 # ドライバーのパス 通常はinfファイルが入っているフォルダ 68 $PrinterDriver.DriverPath= $($(Get-Item -Path $InfPath).Parent.FullName) 69 # Putするのに管理者権限が必要 70 $PrinterDriverList.AddPrinterDriver($PrinterDriver) 71 $PrinterDriverList.Put() 72 73 74 #ポートの設定# 75 76 $PortList=New-Object System.Management.ManagementClass("Win32_TcpIpPrinterPort") 77 $Port=$PortList.CreateInstance() 78 # RAWモード: 1 LPR: 2 79 $Port.Protocol=1 80 # Port番号 RAWモードなので9100 81 $Port.PortNumber='9100' 82 # SNMPをonにするかしないか 83 $Port.SnmpEnabled=$true 84 85 # Port名 86 $Port.name="IP_$IPAdd" 87 # PortのIPアドレス 88 $Port.HostAddress=$IPAdd 89 # PrinterPort追加 90 $Port.Put() 91 92 93 #プリンターの作成# 94 $PrinterList=New-Object System.Management.ManagementClass("Win32_Printer") 95 $Printer=$PrinterList.CreateInstance() 96 97 # 場所の記述 98 $Printer.Location="事務所" 99 # コメント 100 $Printer.Comment="PowerShell" 101 102 # プリンタードライバー 103 $Printer.drivername=$Drive 104 # ポート名 105 $Printer.PortName="IP_$IPAdd" 106 # ディバイス名 107 $Printer.DeviceID=$Name 108 # プリンター登録 109 $printer.Put() 110} 111 112#既に登録されていると失敗する 113function _PrinterPut2() 114{ 115 Param 116 ( 117 # INFファイル の パスを指定します。 118 [String] 119 $InfPath, 120 121 # ドライバ の 名前を指定します。。 122 [String] 123 $Drive, 124 125 # IPアドレスを示す文字列を指定します。 126 [String] 127 $IPAdd, 128 129 # プリンター名を指定します。 130 [String] 131 $Name 132 ) 133 #INFのインストール 134 pnputil -a $InfPath 135 136 #ドライバのインストール 137 Add-PrinterDriver -Name $Drive 138 139 #ポートの作成 140 Add-PrinterPort -Name "IP_$IPAdd" -PrinterHostAddress $IPAdd -PortNumber 9100 141 142 #プリンタの作成 143 Add-Printer -DriverName $Drive -Name $Name -PortName "IP_$IPAdd" -Comment "PowerShell" -Location "事務所" 144} 145 [String[]]$Names1 = @("リコーNo.1(複合機)","リコーNo.1(A3裏紙)","リコーNo.1(手差し)") 146 [String[]]$Names2 = @("リコーNo.2(プリンタ)","リコーNo.2(裏紙)","リコーNo.2(両面)","リコーNo.2(手差し)") 147 #プリンタドライバーのインストール# 148 foreach ($item in $Names1) 149 { 150 _PrinterPut -InfPath "$Library\MP C2503\disk1\oemsetup.inf" -Drive "RICOH MP C2503 JPN RPCS V2" -IPAdd '192.168.1.150' -Name $item 151 } 152 foreach ($item in $Names2) 153 { 154 _PrinterPut -InfPath "$Library\SP C320\disk1\oemsetup.inf" -Drive "RICOH IPSiO SP C320 RPCS" -IPAdd '192.168.1.151' -Name $item 155 } 156 157 #既定プリンタの設定 158 $DefPrinter = $(Get-WmiObject -ComputerName . -Class Win32_Printer) | where {$_.Name -eq $Names2[0]} 159 $DefPrinter.SetDefaultPrinter() 160} 161catch 162{ 163 Write-Host $Error 164 read-host "Enter を押して終了" 165} 166 167

補足情報(FW/ツールのバージョンなど)

Win10 64bit Home & pro
-プリンタ-
リコー
SP C320
RICOH MP C2503

--フォルダ構成--

  • 本体.ps1
  • Library

-├ MP C2503 (リコーHPからダウンロードしたファイルを展開、リネーム)
-├ SP C320 (リコーHPからダウンロードしたファイルを展開、リネーム)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

別の質問で出していた
プロパティーを表示する方法が解決したので

プロパティーを表示するところまでで 一先ず妥協することにします。

投稿2018/11/20 09:08

kamikazelight

総合スコア305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問