【发布时间】: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