Advertisement
Guest User

Untitled

a guest
Jul 9th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Printer-Migration.ps1
  2. #
  3. # Required input variables
  4. $NewServer = "\\srv-fs-01"
  5. $OldServer = "\\srv-dc-01"
  6. $Path = "$env:APPDATA\DefaultPrinter.txt"
  7.  
  8. # Script variables
  9. $Server = [string[]]$OldServer -replace "\\\\"
  10. $Path = "$env:APPDATA\DefaultPrinter.txt"  
  11. $DefaultPrinter = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true"
  12. $DefaultPrinterName = ($DefaultPrinter).name
  13. $OldDefaultServer = ($DefaultPrinter).SystemName
  14. $DefaultPrinter = try {$DefaultPrinter | Select-Object -expandproperty ShareName} catch { "Default printer is not a network printer" }
  15.  
  16. cls
  17. if (!(Test-Path $Path)) {
  18.     $DefaultPrinter | Out-File -FilePath $path -Force -Encoding "ASCII"
  19.      Write-Host "$DefaultPrinterName written to $path"
  20.      }
  21. else {
  22.     Write-Host "Existing default printer file found"
  23.     }
  24. If ($OldDefaultServer -ne $env:computername) {
  25.     Write-Host "Network default printer found"
  26.      }
  27. else {  
  28.      $DefaultPrinter = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true"  | select-object -expand name
  29.      $DefaultPrinter | Out-File -FilePath $path -Force -Encoding "ASCII"  
  30.      Write-Host "Default printer: $DefaultPrinter"
  31.      
  32. }
  33. # Read text file and set new default printer
  34. $DefaultPrinter = Get-Content $path -TotalCount 1
  35. $Printers = Get-WMIObject -Class Win32_Printer
  36. $SharedPrinters = $Printers | Select-Object -ExpandProperty name
  37. $SharedPrinters = [string[]]$sharedprinters -like "$OldServer*"
  38. $PrinterNames = [string[]]$sharedprinters -replace "\\\\srv-dc-01\\"
  39.  
  40. # Add new printers
  41. Write-Host "Adding new shared printers..."
  42. If (Test-Connection "$server" -count 2 -quiet) {
  43. foreach ($printer in $PrinterNames) {
  44. (New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("$NewServer\$Printer")
  45. # Remove old printers
  46. Get-WmiObject -Class Win32_Printer | where{$_.SystemName -eq '\\$OldServer'}| foreach{$_.delete()}
  47. }
  48. }
  49.  else {  
  50.      Write-Host "Unable to contact server to add new printers"
  51.      Exit
  52. }
  53. # Check if a new default printer was set
  54. Write-Host "Setting new default printer..."
  55. If (($OldDefaultServer -ne $env:computername) -or ($OldDefaultServer -ne $null)){
  56.      try {(New-Object -ComObject WScript.Network).SetDefaultPrinter("$NewServer\$DefaultPrinter")} catch { "No new shared printer found"
  57.      break
  58.      }
  59. } else {  
  60.      $DefaultPrinter = "No default printer change was made"  
  61.      Write-Host $DefaultPrinter
  62.      Exit
  63. }
  64. # Check current default printer
  65. $NewDefaultServer = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | Select-Object -ExpandProperty SystemName
  66.  
  67. If ($NewDefaultServer -eq $NewServer) {
  68.      Write-Host "Default Printer was properly set to $NewDefaultServer\$DefaultPrinter"
  69. } else {
  70.      Write-Host Unable to change default printer
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement