Script: Drucker & Treiber Report

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.