Windows サーバー (この例では 2003) 上のすべての Windows プリンター デバイスの既定のページ サイズを取得できるようにしたいと考えています。
これは、Win32_Printer WMI オブジェクトの DefaultPageSize プロパティではなく、プリンター ドライバーによって設定されたものである必要があります。
プリンタ ドライバは、Adobe Generic PostScript Driver です。
Windows サーバー (この例では 2003) 上のすべての Windows プリンター デバイスの既定のページ サイズを取得できるようにしたいと考えています。
これは、Win32_Printer WMI オブジェクトの DefaultPageSize プロパティではなく、プリンター ドライバーによって設定されたものである必要があります。
プリンタ ドライバは、Adobe Generic PostScript Driver です。
プリンター ドライバーによって提供されるプリンター構成は、次のレジストリにあります。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\<printer name>\
これは、Win32_Printer WMI オブジェクトの Current および Default Paper Size プロパティと同じではないようです。
"Default DevMode" プロパティは、デバイスの設定の数のバイナリ表現です。変更ウィンドウでプロパティを開いて、ASCII 表現を表示します。
このフィールドを抽出するために、次を使用しました。
Get-ItemProperty -path Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\* | ForEach-Object{ $_.name, [string]::Join($null, ($_."Default DevMode" | %{ [char][int]$_;})) } > .\printer_driver_properties.txt
Default DevMode プロパティは文字配列に変換され、次に文字列に変換されます。
結果のファイルを、notepad.exe などのエンコード対応エディターで開きます。私の経験では、それは Unicode の 2 バイト文字でした。
各プリンターには、次のような多数のプロパティが必要です。
注: これは、この情報を取得するための簡単なハックです。これを行うためのより正しい方法がある場合、またはそれを整理するために何か他のことを提案したい場合は、私は最も感謝しています.
また、レジストリのこの領域にリソースまたは仕様がある場合は、お知らせください。