Mit folgendem Script baut man sich eine Liste der vorhandenen auf einem Print Server installierten Drucker samt der dafür genutzten Drucker-Treiber und der entsprechenden Treiberversion.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | $Server = $env:COMPUTERNAME $OutputPath = "$PSScriptRoot\Output_Get-PrinterPortInformations.csv" function Get-PrinterPortInformations{ Param( [parameter(Mandatory=$true)] [String] $Server, [parameter(Mandatory=$true)] [String] $OutputPath ) $ReportArray = @() $Printers = Get-Printer -ComputerName $Server -ErrorAction Stop | Where-Object {$_.Shared -eq $true} foreach($Printer in $Printers) { $PrinterPort = Get-PrinterPort -Name $Printer.PortName -ComputerName $Server -ErrorAction Stop $Entry = New-Object PSObject $Entry | Add-Member -type NoteProperty -Name 'Druckername' -Value $Printer.Name $Entry | Add-Member -type NoteProperty -Name 'Treiber' -Value $Printer.DriverName $Entry | Add-Member -type NoteProperty -Name 'Datatype' -Value $Printer.Datatype $Entry | Add-Member -type NoteProperty -Name 'Freigegeben' -Value $Printer.Shared $Entry | Add-Member -type NoteProperty -Name 'Port Name' -Value $PrinterPort.Name $Entry | Add-Member -type NoteProperty -Name 'SNMP Community' -Value $PrinterPort.SNMPCommunity $Entry | Add-Member -type NoteProperty -Name 'Umgebung' -Value $PrinterPort.PrinterEnvironment $Entry | Add-Member -type NoteProperty -Name 'Druckserver' -Value $Server try{ $PrinterDriver = Get-PrinterDriver -Name $Printer.DriverName -ComputerName $Server -ErrorAction Stop | Select-Object Name,PrinterEnvironment,@{ n="DriverVersion";e={ $ver = $_.DriverVersion $rev = $ver -band 0xffff $build = ($ver -shr 16) -band 0xffff $minor = ($ver -shr 32) -band 0xffff $major = ($ver -shr 48) -band 0xffff "$major.$minor.$build.$rev" } } $Entry | Add-Member -type NoteProperty -Name 'Treiberversion' -Value $PrinterDriver.DriverVersion }catch{ $Entry | Add-Member -type NoteProperty -Name 'Treiberversion' -Value "Unbekannt." } $ReportArray += $Entry } $ReportArray | Export-Csv -Path $OutputPath -Append -Encoding Unicode -Delimiter ";" -NoTypeInformation -ErrorAction Stop } Get-PrinterPortInformations -Server $Server -OutputPath $OutputPath -ErrorAction Stop |
Update: Funktioniert nicht wenn es Drucker mit mehreren Ports gibt. Korrigiere ich bei Gelegenheit mal.