andre1979
Goto Top

Printserverumzug Clients mit Powershell umstellen

für einen Printserverumzug möchte ich per Powershell die Clients umstellen

Hallo,

ich habe einen neuen Printserver aufgesetzen und alle Netzwerkdrucker neu installiert.
Die Drucker haben alle den gleichen Freigabenamen wie auf dem alten Server.

Jetzt müssen nur noch alle Clients nachgezogen werden.
Ich wollte das mit Powershell lösen, es muss ja lediglich der SystemName des Druckers ersetzt werden.

Hätte jemand einen Lösungsansatz für mich?

Content-Key: 197162

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

Printed on: April 18, 2024 at 09:04 o'clock

Member: ZiegenhardtM
ZiegenhardtM Jan 17, 2013 at 13:26:56 (UTC)
Goto Top
Wie wäre es mit Hostnamen und IP-Nummer des alten übernehmen?
Member: Andre1979
Andre1979 Jan 19, 2013 updated at 15:51:04 (UTC)
Goto Top
Wenn ich den Hostnamen und die IP Adresse des alten Servers übernehmen könnte , würde ich mir wohl kaum die Arbeit machen.....

Lösungsansatz bis jetzt:

$serveralt = "*-dom-*"  
#Drucker auflisten von Sandort1 und Standort2
$drucker = Get-WMIObject Win32_Printer | where {$_.SystemName -like $serveralt}

#Standart-Drucker bestimmen
$standartdruckeralt = $drucker | Where {$_.Default -like "True"}  

#nicht Standart-Drucker bestimmen
$druckeralt = $drucker | where {$_.Default -like "False"}  

$standartdruckerneu = $standartdruckeralt.DeviceID | Foreach {
    $_ -replace 'Serveralt1', 'ServerNeu1' `  
       -replace 'Serveralt2', 'ServerNeu2' `  
    }
$druckerneu = $druckeralt | Foreach {
    $_ -replace 'Serveralt1', 'ServerNeu1' `  
       -replace 'Serveralt2', 'ServerNeu2' `  
    }

#Alte Drucker entfernen
$drucker | foreach{$_.delete()}


$d = [WMIClass]“\\.\root\cimv2:Win32_Printer“

$standartdruckerneu | foreach{$d.AddDefaultPrinterConnection($_)}

$standartdruckerneu | foreach{$d.SetDefaultPrinter($_)}

$druckerneu | foreach{$d.AddPrinterConnection($_)}

So Weit so gut, nur funktioniert das Foreach bei "$druckerneu" nicht so wie bei "$standartdruckerneu".
Kann mir einer sagen, warum ich bei dem System.Array $druckeralt nicht nach der DeviceID filten kann wie bei $standartdruckeralt?
Member: Andre1979
Andre1979 Jan 20, 2013 at 15:02:58 (UTC)
Goto Top
gelöst

$druckerneu = $druckeralt | %{$_.DeviceID} | Foreach {
Das bestimmen des Standartdruckers kann man sich auch sparen, da wenn der Standartdrucker gelöscht wurde, der erste neu installierte Drucker der Standartdrucker wird.
Also entfällt:
$standartdruckerneu | foreach{$d.SetDefaultPrinter($_)}