我正在编写一个快速的代码字符串,它允许我搜索特定的打印服务器及其内容,比如打印机。我想要做的是,一旦获得打印机信息,就能够使用端口名找到特定的打印机,在本例中,端口名是一个IP地址,不太确定是否可能,但我没有找到一个命令,它允许我使用这些值定义搜索。
Get-Printer -computerName "server01"|select-object -Property Name, PortName 名称PortName
Printer01 X.XXX.x
Prnter02 X.XX.XX.XX
是否有一种方法可以使用Get-打印机命令找到打印机,并使用端口名来查找特定的打印机?
发布于 2021-12-04 14:17:09
我只是更详细地解释@JeffZeitlin非常正确的答案。
Get-打印机-Get打印机cmdlet检索计算机上安装的打印机列表.您还可以使用Get-打印机检索单个打印机的属性,然后将该信息用作其他cmdlet的输入。
Get成员cmdlet获取对象的成员、属性和方法。
Get-Printer | get-memberGet-打印机-选择-对象-Select选择对象或对象集的指定属性。它还可以选择唯一对象、指定数量的对象或数组中指定位置的对象。
Get-Printer | select-object -Property Name, PortNameGet-打印机-选择-对象--Where从传递给它的对象集合中选择具有特定属性值的对象。例如,您可以使用Where对象cmdlet来选择在特定日期之后创建的文件、具有特定ID的事件或使用特定版本Windows的计算机。
Get-Printer | select-object -Property Name, PortName | where PortName -eq "PORTPROMPT:"Get-打印机-ComputerName
Get-Printer -ComputerName $env:Computername | select-object -Property Name, PortName | where PortName -eq "PORTPROMPT:"脚本示例Get-打印机
$server = "$env:Computername"
$printersportnames = Get-Printer -ComputerName $server | select-object -ExpandProperty PortName
#Write-Host $printersportnames
$results = New-Object System.Collections.ArrayList # Empty Array
ForEach ($printerportname in $printersportnames) {
$printerportname = $printerportname.ToString()
#Write-Host $printerportname
$output = Get-Printer -ComputerName $server | where-object {$_.PortName -eq $printerportname}
$x = $output.Name
$y = $output.PortName
$z = $output.CommunicationStatus
$a = $output.OperatingStatus
$Object = New-Object PSObject
$Object | Add-Member -Name 'Name' -MemberType Noteproperty -Value $x
$Object | Add-Member -Name 'PortName' -MemberType Noteproperty -Value $y
$Object | Add-Member -Name 'CommStatus' -MemberType Noteproperty -Value $z
$Object | Add-Member -Name 'OperStatus' -MemberType Noteproperty -Value $a
$results += $object
}
$resultshttps://stackoverflow.com/questions/70187968
复制相似问题