Skip to content

Instantly share code, notes, and snippets.

@sinky
Created May 11, 2015 05:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sinky/5e6dbc93e9935abce39b to your computer and use it in GitHub Desktop.
Save sinky/5e6dbc93e9935abce39b to your computer and use it in GitHub Desktop.
Migrate Printer from old Print Server to new Print Server with Powershell, maintain Default Printer.
$Printers = Get-WmiObject win32_printer
$oldPrintserver = "OLD_PRINTSERVER_HOSTNAME"
$newPrintserver = "NEW_PRINTSERVER_HOSTNAME"
foreach($oldPrinter in $Printers) {
Write-Host "Bearbeite Drucker: "$oldPrinter.Name
#if( $oldPrinter.Name.StartsWith("Microsoft XPS Document Writer") -Or $oldPrinter.Name.StartsWith("Fax") -Or $oldPrinter.Name.StartsWith("An OneNote 2010 Senden") ) {
# Write-Host "Lösche Drucker: "$oldPrinter.Name
# $oldPrinter.PSBase.Delete()
#}
if( $oldPrinter.Name.StartsWith("\\$oldPrintserver") ) {
Write-Host "Migriere Drucker: "$oldPrinter.Name
$pos = $oldPrinter.Name.LastIndexOf("\")
$PrinterHost = $oldPrinter.Name.Substring(0, $pos)
$PrinterName = $oldPrinter.Name.Substring($pos+1)
Write-Host "Verbinde Drucker \\$newPrintserver\$PrinterName"
$WMIPrinter = [WMIClass]"\\.\root\cimv2:Win32_Printer"
$res = $WMIPrinter.AddPrinterConnection("\\$newPrintserver\$PrinterName")
$newPrinter = Get-WMIObject -query "Select * From Win32_Printer Where Name = '\\\\$newPrintserver\\$PrinterName'";
if($newPrinter) {
if($oldPrinter.Default) {
Write-Host "Setzte Standarddrucker: \\$newPrintserver\$PrinterName"
$newPrinter.SetDefaultPrinter()
}
Write-Host "Lösche Drucker: "$oldPrinter.Name
$oldPrinter.Delete()
}else{
Write-Host "Fehler beim Verbinden. "$oldPrinter.Name" wurde nicht gelöscht."
}
}
}
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment