【问题标题】:Get List of Printer Drivers from list of Computers PowerShell从计算机 PowerShell 列表中获取打印机驱动程序列表
【发布时间】:2018-03-29 06:28:14
【问题描述】:

我已经尝试了各种迭代,并得到了一系列错误。我正在尝试从计算机列表中获取已安装驱动程序的列表。我在 PowerShell 中尝试过的所有方法都没有将信息通过管道传输到 csv 中。这是脚本的当前迭代。

#Load Active Directory 
Import-Module activedirectory
#Load list of computers
$results = @()
$Computer = Get-Content -path 'C:\ScriptResources\computers.txt'

#Check each computer in the list 
foreach($ComputerName in $Computer)
    {
    $results += Get-ADComputer -Filter " Name -Like '*$ComputerName*' " | Get-PrinterDriver; Start-Sleep -milliseconds 500 
    } 

#Export to CSV file
$results | export-csv 'C:\ScriptResults\InstalledPrinters.csv'

我也将它与 Get-Printer 命令一起使用并得到以下错误。

Get-Printer : No MSFT_Printer objects found with property 'Name' equal to 'Redacted'.  Verify the value of the
property and retry.

根据我输入的 $Computer 文件,我会得到不同的错误。我还发现 RPC 服务器不可用并且错误后台处理程序服务未运行。我有域范围的权限,我检查了打印后台处理程序服务,它正在运行。

我认为这很奇怪的原因是我使用 .bat 工具从单个主机获取打印机信息,而且我没有遇到任何问题。我试图把它放在 PowerShell 中的原因是 1)我想做整个域,2)PowerShell 以更有用的方式格式化它的输出。

wmic /node:%ComputerIP% path win32_printer get deviceid, drivername, portname

另外,我还在脚本的 $results 函数中尝试了以下方法

$results += Get-WmiObject -class Win32_printer -ComputerName name, systemName, shareName

这并没有给出错误。相反,它所做的是,对于计算机列表中的每台计算机,它会检查我正在从中运行脚本的计算机的打印机,并在我的计算机上安装的打印机的每一行上输出。

我很茫然,任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 尝试将$results += Get-WmiObject -class Win32_printer -ComputerName name, systemName, shareName更改为$results += Get-WmiObject -class Win32_printer -ComputerName $Computer | Select name, systemName, shareName
  • 另一件事,在$results += Get-ADComputer -Filter " Name -Like '*$ComputerName*' " | Get-PrinterDriver,你为什么要使用Get-ADComputer 来过滤计算机名。 Get-PrinterDriver 本身有一个-ComputerName 参数,你可以用它来代替!
  • 当我继续使用 -ComputerName 参数时遇到不同的错误时,我相信我选择了 Get-ADComputer。我编写了一个单独的脚本,它实际上需要 ADComputer 信息并且它可以工作,所以我想我只是测试一下,看看我是否可以到达某个地方。我会在周末尝试你的建议,让你知道进展如何。如果我能重现我遇到的错误代码,我会在这里发布。感谢您的帮助!
  • 这是我在使用$results += Get-WmiObject -class Win32_printer -ComputerName $Computer | Select name, systemName, shareName 时遇到的问题:Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
  • 我已经检查以确保我的远程过程调用和 Windows Management Instrumentation 服务都在运行。

标签: powershell printing


【解决方案1】:

就这样关闭了。 Vivek 的回答最终奏效了。

$results += Get-WmiObject -class Win32_printer -ComputerName $Computer | Select name, systemName, shareName

我遇到的 RPC 问题是计算机列表由于某种原因全部关闭(远程站点 + 不同时区 + 在第二班期间进行测试)。通常情况下,一切都会继续进行。所以这只是一个反常现象。

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    相关资源
    最近更新 更多