mr.error
Goto Top

Verbundenen Drucker in lokalen Drucker Umwandeln

Hallo zusammen,

wir haben derzeit all unsere 150 Drucker auf einem Printserver laufen, auch alle Arbeitsplatzgeräte. Das würden wir gerne ändern und die Drucker an den Arbeitsplätzen auch die direkt auf den PCs installieren. Da es sich dabei um ca. 120 Geräte handelt würden wir das ganz gerne per Script machen. Doch glaube ich, dass wir da mit Batch nicht weit kommen und viel mehr kann ich leider nicht.

Daher meine Frage an euch, hat Jemand evtl. eine Idee oder Ansatz wir man das am Besten lösen könnte?

Hier mal mein Ansatz in "Pseudo-Code":
Script start
Lese alle Drucker aus inkl. deren Anschlüsse
Nimm die Drucker der Firma OKI (AP Geräte sind nur OKIs)
Verbinde diese Drucker lokal mit dem vorhanden Treiber und dem entsprechenden Anschluss

Klingt so erstmal ganz einfach, ist es aber leider zumindest für mich, nicht. Grade der Teil mit dem Anschluss ist Schwierig. Ich habe die Drucker schon per
REG QUERY "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices  
auslesen können, aber dort finde ich die Anschlüsse nicht. Hier war mein Ansatz die Anschlussliste aus dem Druckserver als CSV zu exportieren und mit dem Druckernamen den entsprechenden Anschluss raus zu finden.

Evtl. hat ja einer von euch einen guten Clou, der mich weiterbringt.

Schon mal Danke fürs lesen und schon mal ein schönes Wochenende!

Mr. Error

Content-Key: 338320

Url: https://administrator.de/contentid/338320

Ausgedruckt am: 19.03.2024 um 08:03 Uhr

Mitglied: AndreasHoster
Lösung AndreasHoster 19.05.2017 um 10:15:37 Uhr
Goto Top
Wie wäre es mit Powershell?
Powershell hat CMDLets für:
Get-Printer zum Auslesen
Add-PrinterPort zum Portdefinieren
Set-Printer zum Ändern
Mitglied: Mr.Error
Mr.Error 19.05.2017 um 10:20:47 Uhr
Goto Top
Cooler Tipp! Schaue ich mir an!

Danke!
Mitglied: Mr.Error
Mr.Error 22.05.2017 um 09:58:55 Uhr
Goto Top
Hallo zusammen,

der Tipp es mit PS zu machen war Gold wert. Script ist Fertig und funktioniert toll! Hier das Script für alle, die es evtl. auch gebrauchen können.

$default = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true"  
$default = $default.ShareName

$data = Get-Printer | where DriverName -eq "Druckertreibername" | where Type -eq "Connection" | select Name, PortName  
Write-Host $data
Foreach($line in $data){ 
if($line.Name.StartsWith("\\Druckerserver\")){   
   $line.Name = $line.Name.Substring(16) 
   }   
}

Foreach($line in $data){ 
if($line.Name.StartsWith("\\Druckerserver.")){   
   $line.Name = $line.Name.Substring(16) 
   }   
}

Foreach($line in $data){ 
if($line.PortName.StartsWith("IP_")){   
   $line.PortName = $line.PortName.Substring(3) 
   }   
}

Foreach($line in $data){ 
Add-PrinterPort -Name $line.PortName -PrinterHostAddress $line.PortName  
}

Foreach($line in $data){ 
Add-Printer -Name $line.Name -DriverName "Druckertreibername" -PortName $line.PortName   
}

$data = Get-Printer | where DriverName -eq "Druckertreibername" | where Type -eq "Connection" | select Name  

Foreach($line in $data){ 
Remove-Printer -Name $line.Name 
}  

$data = Get-Printer | where DriverName -eq "Druckertreibername"   

Foreach($line in $data){ 
Get-PrintConfiguration $line.Name 
} 

$default = Get-WMIObject -query "Select * From Win32_Printer Where Name = '$default'"  

$default.SetDefaultPrinter()