加快WMI查询以选择单个远程打印机

时间:2014-12-03 17:46:55

标签: powershell printing wmi

我们有一台包含~800台打印机的打印服务器,我正在寻找一种快速选择PowerShell v3中的一台打印机对象的方法。

以下是我尝试过的方法:

$printer = Get-Wmiobject win32_printer -computername $server | where {$_.name -Match $printer}
$printer = Get-Wmiobject win32_printer -computername $server -filter "name='$printer'"
$printer = Get-Wmiobject win32_printer -computername $server -filter "name='$printer'" -property name
$printer = Get-Wmiobject -query "SELECT * FROM win32_printer WHERE name = '$printer'" -computername $server

所有这4种方法都需要约25秒。有什么办法可以简单地快速选择远程打印机吗?

1 个答案:

答案 0 :(得分:4)

您返回的WMI对象将具有Path属性。您可以使用它来构造一个WMI对象,一旦您知道路径就会直接进入打印机:

[WMI]'\\Server1\root\cimv2:Win32_Printer.DeviceID="Printer1"'

您可能希望将其构建为包含已知打印机名称的哈希表和每个打印机名称的WMI路径的函数,或者如果您知道确切的服务器和打印机名称,则可以构造该字符串。

这应该立即返回结果。