Serveur d'impression

Script côté client pour changer de serveur d'impression – le blog STONYWALL – Serveur d’impression

Par Titanfall , le 6 octobre 2019 - 3 minutes de lecture

4 avril 2017

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
}