Powershell - MIGRATE PRINTERS TO NEW SERVER

MIGRATE PRINTERS TO NEW SERVER

A Powershell script in the Printers category

Function Migrate-Printer {
    PARAM (
        [string] $ShareName,
        [string] $oldServer,
        [string] $newServer
    )
 
    $currentPrinter = Get-WmiObject -Query "SELECT * FROM Win32_Printer WHERE Network=True AND ShareName = '$($ShareName)' AND SystemName = '\\\\$($oldServer)'"
 
    if ($currentPrinter -eq $null) {
        Write-Verbose "Cant find \\$($oldServer)\$($ShareName)"
    } else {
        Write-Verbose "Migrating printer $($ShareName) from $($oldServer) to $($newServer)"
 
        $net = New-Object -com WScript.Network
 
        Write-Verbose "Adding printer \\$($newServer)\$($ShareName)"
        $net.AddWindowsPrinterConnection("\\$($newServer)\$($ShareName)")
 
        Write-Verbose "Removing printer \\$($newServer)\$($ShareName)"
        $net.RemovePrinterConnection("\\$($oldServer)\$($ShareName)")
     
 
        if ($currentPrinter.Default -eq "True") {
            Write-Verbose "Setting default to \\$($newServer)\$($ShareName)"
            $net.SetDefaultPrinter("\\$($newServer)\$($ShareName)")
        }
    }
 
}