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-Key: 262231

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

Printed on: April 19, 2024 at 08:04 o'clock

Mitglied: 114757
114757 Feb 04, 2015 at 07:53:59 (UTC)
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
Member: Pago159
Pago159 Feb 04, 2015 updated at 15:22:39 (UTC)
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
}