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