pago159
Goto Top

Drucker Port und Name über WMI ändern

Hallo Kollegen,

gibt es die Möglichkeit mit einem PowerShell Skript Daten eines Druckerobjektes auf einem Printserver zu ändern?
Derzeit lösche ich alle Drucker und erstelle Sie neu, allerdings gehen dabei Einstellungen wie "Zusätzliche Postfächer" verloren.
Wenn es eine Möglichkeit geben würde diese über WMI einfach zu ändern, würde das einiges an Arbeit ersparen.

Geändert werden müssen:

Name
ShareName
Port

Content-ID: 262231

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

Ausgedruckt am: 24.11.2024 um 16:11 Uhr

114757
114757 04.02.2015 um 08:53:59 Uhr
Goto Top
Probier's mal hiermit
$printer = gwmi Win32_Printer -Filter "Name ='HP Laserjet 1320'"  
$printer.ShareName = "BlaBlub"  
$printer.Name = "Blablubprinter"  
$printer.PortName = "xyz"  
$printer.put()
Gruß jodel32
Pago159
Pago159 04.02.2015 aktualisiert um 16:22:39 Uhr
Goto Top
Hall Jodel,
danke schon mal für die schnelle Hilfe.
Ich habe es mal eben getestet.
Auch bei diesem Code-Teil wird ein neues Druckerobjekt erstellt, ohne die Einstellungen zu behalten, sobald ich die DeviceID ändere.
Wenn ich diese nicht ändere, dann bleibt auf dem Printserver der Druckername auf dem alten Namen stehen und nimmt nicht den Neunen Namen an.
Man muss dazu sagen, dass wir sowohl Name als auch ShareName gleich benennen, da es die Verwaltung einfacher macht.

Die Variable Drivername beinhaltet den alten Druckernamen. Dies ist nur meine Test-CSV-Datei face-wink

$Update = {

   $global:printers = Import-Csv $import –Delimiter ';'   
    $printserver = $comboPrintServer.Text
    foreach ($printer in $global:printers){

        $global:drivername = $printer.drivername
        $global:RAWportname = $printer.portname
        $global:sharename = $printer.sharename
        $global:location = $printer.location
        $global:comment = $printer.comment

        Try{
           $printserver = $comboPrintServer.Text
            $global:portname = "IP_$($RAWportname)"  
			
$wmi = ([WMICLASS]"\\$printserver\ROOT\cimv2:Win32_TCPIPPrinterPort")  
$wmi.psbase.scope.options.enablePrivileges = $true
$port = $wmi.CreateInstance()
$port.Name = $portname
            $port.Protocol = 1  
            $port.HostAddress = $RAWportname
            $port.SNMPEnabled = $False

            $port.put()

$print = gwmi Win32_Printer -computer $printserver -Filter "Name = '$drivername'"  
$print.ShareName = $sharename
$print.Name = $sharename
$print.DeviceID = $sharename
$print.Comment = $comment
$Print.Portname = $portname

$print.put()
 }catch{
            return $_.Exception.Message
    }
    }
    return $true
}