Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Printer-Migration.ps1
- #
- # Required input variables
- $NewServer = "\\srv-fs-01"
- $OldServer = "\\srv-dc-01"
- $Path = "$env:APPDATA\DefaultPrinter.txt"
- # Script variables
- $Server = [string[]]$OldServer -replace "\\\\"
- $Path = "$env:APPDATA\DefaultPrinter.txt"
- $DefaultPrinter = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true"
- $DefaultPrinterName = ($DefaultPrinter).name
- $OldDefaultServer = ($DefaultPrinter).SystemName
- $DefaultPrinter = try {$DefaultPrinter | Select-Object -expandproperty ShareName} catch { "Default printer is not a network printer" }
- cls
- if (!(Test-Path $Path)) {
- $DefaultPrinter | Out-File -FilePath $path -Force -Encoding "ASCII"
- Write-Host "$DefaultPrinterName written to $path"
- }
- else {
- Write-Host "Existing default printer file found"
- }
- If ($OldDefaultServer -ne $env:computername) {
- Write-Host "Network default printer found"
- }
- else {
- $DefaultPrinter = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | select-object -expand name
- $DefaultPrinter | Out-File -FilePath $path -Force -Encoding "ASCII"
- Write-Host "Default printer: $DefaultPrinter"
- }
- # Read text file and set new default printer
- $DefaultPrinter = Get-Content $path -TotalCount 1
- $Printers = Get-WMIObject -Class Win32_Printer
- $SharedPrinters = $Printers | Select-Object -ExpandProperty name
- $SharedPrinters = [string[]]$sharedprinters -like "$OldServer*"
- $PrinterNames = [string[]]$sharedprinters -replace "\\\\srv-dc-01\\"
- # Add new printers
- Write-Host "Adding new shared printers..."
- If (Test-Connection "$server" -count 2 -quiet) {
- foreach ($printer in $PrinterNames) {
- (New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("$NewServer\$Printer")
- # Remove old printers
- Get-WmiObject -Class Win32_Printer | where{$_.SystemName -eq '\\$OldServer'}| foreach{$_.delete()}
- }
- }
- else {
- Write-Host "Unable to contact server to add new printers"
- Exit
- }
- # Check if a new default printer was set
- Write-Host "Setting new default printer..."
- If (($OldDefaultServer -ne $env:computername) -or ($OldDefaultServer -ne $null)){
- try {(New-Object -ComObject WScript.Network).SetDefaultPrinter("$NewServer\$DefaultPrinter")} catch { "No new shared printer found"
- break
- }
- } else {
- $DefaultPrinter = "No default printer change was made"
- Write-Host $DefaultPrinter
- Exit
- }
- # Check current default printer
- $NewDefaultServer = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | Select-Object -ExpandProperty SystemName
- If ($NewDefaultServer -eq $NewServer) {
- Write-Host "Default Printer was properly set to $NewDefaultServer\$DefaultPrinter"
- } else {
- Write-Host Unable to change default printer
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement