私が達成しようとしていること:
Powershellスクリプト(WMIまたはコマンドレットを直接、またはその組み合わせ)を使用して、PrintServerロールで2003または2008サーバーにクエリを実行し、共有されているプリンターを列挙してから、そのプリンターで使用されているドライバーを一覧表示します。具体的には、x86またはx64ドライバーが使用されているかどうかを示します。使用済み(または両方)。
Win32_Printer 、 Win32_PrinterDriver 、 Get-Printer などを見てきました。これらのどれもx64ドライバーについて教えてくれないようです。複数のプラットフォーム固有のドライバーがロードされている場合。何かのようなもの:
gwmi win32_printer -computername lebowski | %{$name = $_.name
$supported = $_.getrelated('Win32_PrinterDriver') | select supportedplatform, driverpath, version
Write-Host $name
return $supported
}
以下を生成します。
PCLOADLETTER
supportedplatform : Windows NT x86
driverpath : C:\WINDOWS\system32\spool\DRIVERS\W32X86\3\RIC54Dc.DLL
version : 3
ただし、問題は、特定のプリンターにもx64ドライバーがロードされていることです。 x64ドライバーがロードされているかどうかを確認するためだけに、100台のプリンターの[プロパティ]タブを手動で確認したくありません。
スクリプトは良さそうです。 Select-Object name, driverpath
ではなくselect supportedplatform, driverpath, version
を使用することをお勧めします。
出力は次のようになります。
Xerox WorkCentre Pro C3545 PS、3、Windows x64 C:\ Windows\system32\pool\DRIVERS\x64\3 .. ..
Xerox WorkCentre Pro C3545,3、Windows NT x86 C:\ Windows\system32\pool\DRIVERS\W32X8 .. ..
確かに、それでもおそらくあなたが望むほどきれいではありません。これは(私が思うに)あなたが探しているものをあなたに与えるでしょう。
これはとても面白いパズルです。
私が提案できる最も近いものはこれです:
PowerShellスクリプトを2回実行します。
かつては「ネイティブ」(x64システムでは64ビットとして実行されます)で、再び32ビットとして実行されます。 32ビットモードでは、32ビットドライバーを備えたプリンターのみが表示されます(ここでは少し推測していますが、これは本当だと思います)。
いくつかの記事で、スクリプトをx86およびx64として実行する方法を確認できます。これが1つです: http://www.gregorystrike.com/2011/01/27/how-to-tell-if-powershell-is-32-bit-or-64-bit/
同じスクリプトが32または64として正常に実行されます。
次に、上記が期待どおりに動作している場合は、スクリプトにリストをファイルに保存します。
32bitprinters.txt 64bitprinters.txt
次に、2番目のスクリプトがリストを比較するか、必要なことを実行します。