mavraven
Goto Top

Netzwerkdrucker und Anschlüsse per Powershell aus CSV Datei

Ich möchte mehrere Netzwerkdrucker per Powershell Script erstellen anstatt immer wieder den manuellen Weg über die GUI zu gehen.

Ich bin momentan dabei einen 2003 Printserver nach 2008 R2 überzuführen, migrieren wollten wir allerdings nicht, sondern das ganze von Grund auf neu gestalten.

Die Idee war nun die Druckeranschlüsse bzw die Drucker selbst per Powershell zu erstellen und freizugeben, ich hab dann auch schon etwas recherschiert und ein kleines Script zusammengebastelt. Dieses gibt mir auch keine Fehlermeldung an, jedoch wird der Testdrucker den ich in die CSV Datei die ausgelesen wird eingetragen habe dennoch nicht erstellt, ich vermute mal ich habe ein Problem mit den Variablen die ich den Datensätzen aus der CSV Datei zuordne ?

Würde mich freuen wenn mir jemand einen kleinen Tritt geben face-wink bzw Hilfe leisten könnte

Hier also mein Script:

$dataSource=import-csv "Drucker.csv"  
foreach($dataRecord in $dataSource) {
        $auftrag=$dataRecord.auftrag
        
        switch ($auftrag) {
        
                Drucker_installieren {
                 #map variables to data source
                 $Druckername=$dataRecord.Hostname
                 $Druckertreiber=$dataRecord.Treiber
                 $Druckeranschluss=$dataRecord.Anschluss
                 $Freigabename=$dataRecord.Freigabe
                 
                 
                    Write-Output "Drucker erstellen"  
                    $printer=([WMICLASS]"\\.\ROOT\cimv2:Win32_Printer").createInstance()  
                    $printer.Name="$Druckername"  
                    $printer.DriverName="$Druckertreiber"  
                    $printer.DeviceID="$Druckername"  
                    $printer.Portname="$Druckeranschluss"  
                    $printer.Shared=$true
                    $printer.Sharename="$Freigabename"  
                    $printer.Put()
                    
                    }
                    
                    
                 Druckeranschluss_anlegen {
                   #map variables to data source
                   $Anschlussbezeichnung=$dataRecord.Anschlussname
                   $IP_Adresse=$dataRecord.IPAdresse
                   
                     Write-Output "Erstelle Druckeranschluss "$Anschlussbezeichnung""  
                     $port=([WMICLASS]"\\.\ROOT\cimv2:Win32_TCPIPPrinterPort").createInstance()  
                     $port.Name=$Anschlussbezeichnung
                     $port.SNMPEnabled=$false
                     $port.Protocol=1
                     $port.Hostaddress=$IP_Adresse
                     $port.Put()
                     }
                     
           }
           
    }

danke

Gruß Markus

Content-ID: 168189

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

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

MavRaven
MavRaven 23.08.2011 um 11:25:56 Uhr
Goto Top
Falls es jemanden interessiert habe das Problem selbst lösen können und das Script nochmal anders aufgezogen hier für alle Interessierten das Endprodukt:

Import-Csv "printers.csv" -Delimiter ";" | foreach {  
Write-Output "Write-Output `"Creating printer ```"$($_.PrinterName)```"`""  
$printer =([WMICLASS]"\\.\ROOT\cimv2:Win32_Printer").createInstance()  
$printer.Name="$($_.PrinterName)"  
$printer.DriverName="$($_.Driver)"  
$printer.DeviceID="$($_.PrinterName)"  
$printer.PortName="$($_.PrinterPort)"  
$printer.Shared=$true
$printer.ShareName="$($_.PrinterName)"  
$printer.Put()
""  
} 
ottl05
ottl05 30.11.2011 um 10:18:32 Uhr
Goto Top
und mit diesem Script wird der TCP/IP-Port auch gleich erstellt?

Die CSV sollte also folgendermaßen aussehen?:
PrinterName;PrinterPort;Driver
MavRaven
MavRaven 30.11.2011 um 12:13:43 Uhr
Goto Top
Hi,

der Printerport wird nicht mit erstellt diese habe ich in meinem Fall vom alten Printserver nur importiert.

dafür brauchst du ein zweites Script da der Printerport bzw Anschluss über eine andere WMI Klasse erstellt wird als der Drucker selbst.

Ich hab das ganze noch irgendwo liegen ich werd mal schauen das ich es finde und gleich posten.