################################################################################## # # # Script name: Get-PrinterInformation.ps1 # Author: goude@powershell.nu # Homepage: www.powershell.nu # # ################################################################################## param ([string]$Computer, [switch]$ToCsv, [switch]$help) function GetHelp() { $HelpText = @" DESCRIPTION: NAME: Get-PrinterInformation.ps1 Gets Detailed PrinterInformation through WMI PARAMETERS: -Computer Computer Name (Required) -ToCsv Writes the information to a Csv file (Optional) -help Display HelpText (Optional) SYNTAX: Get-PrinterInformation.ps1 -Computer . Gets Printerinformaton frpm the local computer Get-PrinterInformation.ps1 -Computer Client1 -ToCsv Gets Printer Information from Client1 and writes it to a csv file "Client1","Client2","Client3" | ForEach { Get-PrinterInformation.ps1 -Computer $_ } Gets PrinterInformation foreach printer Get-PrinterInformation.ps1 -help Displays the help topic for the script "@ $HelpText } function Get-PrinterInformation($Computer) { # WMI Classes used $Printer = Get-WmiObject win32_printer -ComputerName $Computer $PrinterDriver = Get-WmiObject Win32_PrinterDriver -ComputerName $Computer foreach($Print in $Printer) { $Driver = $PrinterDriver | Where { $_.Name -match $Print.DriverName } # Create a PsObject to hold information $PrinterArray = New-Object PsObject $PrinterArray | Add-Member -memberType NoteProperty "Computer" -Value $Computer $PrinterArray | Add-Member -memberType NoteProperty "Name" -Value $Print.Name $PrinterArray | Add-Member -memberType NoteProperty "DefaultPrinter" -value $Print.Default $PrinterArray | Add-Member -memberType NoteProperty "DriverName" -value $Print.DriverName $PrinterArray | Add-Member -memberType NoteProperty "DriverPath" -value $Driver.DriverPath $PrinterArray | Add-Member -memberType NoteProperty "Driverdll" -value ($Driver.DriverPath -replace ".*\\","") $PrinterArray | Add-Member -memberType NoteProperty "HorizontalResolution" -value $Print.HorizontalResolution $PrinterArray | Add-Member -memberType NoteProperty "VerticalResolution" -value $Print.VerticalResolution $PrinterArray | Add-Member -memberType NoteProperty "LocalPrinter" -value $Print.Local $PrinterArray | Add-Member -memberType NoteProperty "PrintProcessor" -value $Print.PrintProcessor $PrinterArray | Add-Member -memberType NoteProperty "Location" -value $Print.Location $PrinterArray | Add-Member -memberType NoteProperty "Comment" -value $Print.Comment $PrinterArray | Add-Member -memberType NoteProperty "Description" -value $Print.Descirption # Return information to host $PrinterArray } } function ToCsv($Computer) { $Printers = Get-PrinterInformation $Computer # Stores the Csv file in Current Users UserProfile. $Printers | Export-Csv "$Env:USERPROFILE\PrinterList.csv" -NoTypeInformation } if ($help) { GetHelp; Continue } if ($Computer -AND $ToCsv) { ToCsv $Computer } elseif ($Computer -AND !$ToCsv) { Get-PrinterInformation $Computer } else { "Specify Client" }