【问题标题】:Speeding up WMI query to select a single remote printer加快 WMI 查询以选择单个远程打印机
【发布时间】:2014-12-03 17:46:55
【问题描述】:

我们有一个包含大约 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 秒。有什么方法可以让我快速选择远程打印机?

【问题讨论】:

  • 恐怕不太可能。虽然 WMI 非常强大,但它并没有那么快。
  • 您运行的是 PS V4 吗?如果是这种情况,您可以与 cmdlet Get-Printer 进行比较
  • 不幸的是,我被 V3 卡住了。

标签: powershell printing wmi


【解决方案1】:

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

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

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

这应该几乎立即返回结果。

【讨论】:

  • 这对我有用。使用此方法需要 2 秒才能抓取打印机。谢谢!
  • 在大型打印服务器上此方法快 100 倍!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多