Param ([parameter(Mandatory=$true,Position=0, HelpMessage="Old Server")] $ OldServer, [parameter(Mandatory=$true,Position=1, HelpMessage="New Server")] $ NewServer, [parameter(Mandatory=$true,Position=2, HelpMessage="Workstation Name")] $ ThisPC, [parameter(Mandatory=$true,Position=3, HelpMessage="Username")] $ ThisUser, [parameter(Mandatory=$true,Position=4, HelpMessage="Path to Log")] $ OutputLog) Clear-Host # Exemple de ligne de commande:. Run-PrintMigration.ps1 -ExecutionPolicy Unrestricted -command "& '\ domain.com scripts Run_PrintMigration.ps1' '\ oldserver' '\ newserver' '$ WkSta' '$ UserID '' \ domain.com logs $ '" # Cette procédure ajoute une nouvelle imprimante Fonction InstallNewPrinter Param ([string]$ currentPrinter, [string]$ newPrinter) $ Global: TextLog + = "++ Add:" + $ newPrinter #Ajouter une nouvelle imprimante $ global: net.AddWindowsPrinterConnection ($ newPrinter) #Ajouter l’imprimante actuelle à la liste TobeDeleted $ global: PrintersTobeDeleted + = $ currentPrinter # Cette procédure définit la nouvelle imprimante par défaut respectée. Fonction SetPrinterDefault Param ([string]$ defaultPrinter) #Si l'imprimante par défaut est la valeur par défaut, définissez la nouvelle comme imprimante par défaut $ global: net.SetDefaultPrinter ($ defaultPrinter) # Cette procédure supprime toutes les anciennes imprimantes remplacées par ce script. Fonction DeleteCurrentPrinters foreach ($ printerTodelete dans $ global: PrintersTobeDeleted) $ Global: TextLog + = "- Delete:" + $ printerTodelete $ global: net.RemovePrinterConnection ($ printerTodelete) # Définir le nom du serveur d'impression $ Printserver = "." # Décommentez l'utilisation de ces variables pour les nouveaux / anciens noms de serveur d'impression # $ newServer = "\ NEWPRINT" # $ oldServer = "\ OLDPRINT" $ Global: TextLog = @ () $ Imprimantes = @ () $ global: PrintersTobeDeleted = @ () $ OutputFile = $ OutputLog + $ ThisUser + "_" + $ ThisPC + "_" +[DateTime]:: Now.Year.ToString () +[DateTime]:: Now.Month.ToString () +[DateTime]:: Now.day.ToString () +[DateTime]:: Now.hour.ToString () +[DateTime]:: Now.Minute.ToString () +[DateTime]:: Now.Second.ToString () + ".txt" $ Global: TextLog + = "$ OldServer $ NewServer $ ThisPC $ ThisUser $ OutputLog" # Cette section identifiera toutes les imprimantes réseau installées sous le profil des utilisateurs connectés à l’aide de WMI. $ Printers = Get-WMIObject Win32_Printer -nom_ordinateur $ Printserver -Filter "Network = True" if ($ Imprimantes) { # Ceci est un tableau vierge pour stocker l’imprimante réseau installée sous le profil des utilisateurs connectés et le transmettre. $ PrintersTobeDeleted = @ () $ newPrinter = "" $ defaultPrinter = "" $ Global: TextLog + = "Log Start" # Obtenir un objet réseau $ global: net = new-Object -com WScript.Network foreach ($ Imprimante dans $ Imprimantes) { #Check pour voir si c'est une imprimante connectée à l'ancien serveur if ($ Printer.SystemName - like "$ oldServer *") #Une vérification pour savoir s'il faut ajouter une nouvelle imprimante $ AddNewPrinter = $ true #Check pour voir si l'imprimante existe aussi dans le nouveau serveur Foreach ($ comparePrinter in $ Printers) If (($ Printer.shareName -eq $ comparePrinter.shareName) -et ($ comparePrinter.SystemName -like "$ newServer *")) #Retirer l'ancienne imprimante en ajoutant l'imprimante actuelle à la liste TobeDeleted $ global: PrintersTobeDeleted + = $ Printer.Name # La nouvelle imprimante a déjà été créée, pas besoin d’en ajouter une autre. $ AddNewPrinter = $ false #Si la nouvelle imprimante n'existe pas, créez-en une nouvelle if ($ AddNewPrinter) commutateur ($ Printer.ShareName) "OLDPRN01" $ newPrinter = $ newServer + " NEWPRN01" "OLDPRN02" $ newPrinter = $ newServer + " NEWPRN02" "OLDPRN03" $ newPrinter = $ newServer + " NEWPRN03" "OLDPRN04" $ newPrinter = $ newServer + " NEWPRN04" default $ newPrinter = $ newServer + "" + $ Printer.Sharename if ($ Printer.Default) $ defaultPrinter = $ newPrinter InstallNewPrinter $ Printer.Name $ newPrinter $ newPrinter = "" Autre $ Global: TextLog + = ".. NO Change:" + $ Printer.Name if ($ defaultPrinter -ne "") SetPrinterDefault $ defaultPrinter } DeleteCurrentPrinters $ Global: TextLog + = "Log End" # Écriture-sortie $ Global: TextLog # Write-Output $ OutputFile $ Global: TextLog | Fichier de sortie $ OutputFile }
Commentaires
Laisser un commentaire