[Powershell] Anzeigen von Drucker mit IP-Adresse auf Printserver

nintendoluk

Commander
Registriert
Mai 2014
Beiträge
2.124
Hi zusammen,

ich arbeite zurzeit an einem Skript, welches alle installierten Drucker anzeigt mit der dazugehörigen IP-Adresse im Netzwerk. Der Zweck von dem Programm soll sein, dass man anhand von der IP-Adresse den entsprechenden Druckernamen herausfindet.

Das Herausfinden der Namen von allen installierten Druckern war kein Problem:

Code:
PrintService[] local_printers = PrintServiceLookup.lookupPrintServices(null, null);

for(int i_local_printer_counter = 0; i_local_printer_counter < local_printers.length; i_local_printer_counter++){
					
logger.info(String.format("Printer-Name: %s ... IP-Address: TODO" , local_printers[i_local_printer_counter].getName()) /*TODO: getIpAddress*/);
					
}

Beim durchsuchen des Internets habe ich jetzt leider keinen funktionierenden Lösungsansatz gefunden, wie man die IP-Adressen der Drucker herausfindet. Deshalb Frage ich euch, ob einer von euch so etwas schonmal gemacht hat? Ist mein Vorhaben überhaupt möglich? Wenn ja, hat einer einen Plan, wie?

Schonmal Danke und Schöne Grüße
Lukas


EDIT:
Alternativ würde auch ein Batch-, Powershell-, VB-Script durchaus ausreichend. Da ich mich da jedoch eher weniger auskenne, bräuchte ich da auch zusätzliche Hilfe.
 
Zuletzt bearbeitet von einem Moderator:
AW: PrintSevice - IP-Adresse herausfinden

Powerhsell : Get-Printer z.b
 
AW: PrintSevice - IP-Adresse herausfinden

Danke! Das hat geholfen :-)

Hier mein fertiger Code:

Code:
# Set print server Name:
$Printserver = "srvtest04a"

#Do not Change anything below

start-transcript -path c:\printer_list.txt

# Get printer information
$Printers = Get-WMIObject Win32_Printer -computername $Printserver

Write-Host "Your Printserver: " $Printserver


foreach ($Printer in $Printers)
{

    $Ports = Get-WmiObject Win32_TcpIpPrinterPort -computername $Printserver
	
        foreach ($Port in $Ports)
        {
            if ($Port.Name -eq $Printer.PortName)
            {
			$obj = new-object psobject
			$obj | add-member noteproperty Name ($Printer.Name)
			$obj | add-member noteproperty IP ($Port.HostAddress)
			
			write-output $obj

			

            }
        }
}


# Wait for key to press

Write-Host "Press any key to continue ..."

$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
 
AW: PrintSevice - IP-Adresse herausfinden

Gut WMI ist auch eine Möglichkeit :-D
Wobei du auch die CIM Class verwenden könnstet - WMI in der Form bleibt wohl nimmer lange.


Ansonsten schönes Script 1 mit * :-D
 
Titel wie gewünscht angepasst.
 
Dann Glückwunsch zu diesen Script.
Powershell ist im Bereich Windows Server, SQL, Exchange und AD eine echte Erleichertung.
 
Zumindest in Windows Umgebungen ja, es ist ein sehr mächtiges Werkzeug durch die Integration des .NET Frameworks.
Du kannst quasi alles aus dem .NET Framework verwenden um dein Script zu den Funktionen zu verhelfen, die du für dein Projekt brauchst.

Ich erledige derweil knapp 60% meiner Tasks mit Powershell von SQL Server, Restore, Backup, IIS und File Operations.
 
Zurück
Oben