Scripts de migration du serveur d'impression: PowerShell – Bien choisir son serveur d impression

Mon collègue et moi-même avions besoin de migrer de notre serveur d'impression 2008 vers un serveur plus récent pour plusieurs raisons. Nous ne pouvions pas utiliser l'outil de migration de Microsoft, car nous avions trop de pilotes pour le fichier cab et le correctif qui nous permettrait d'utiliser un type différent ne s'installe pas. Cela nous a laissé des scripts comme seule véritable option. Nous avons pu le faire en 3 parties.

Partie 1 – Pilotes

Nous avons copié les dossiers de "C: Windows System32 spool drivers x64 3" sur le serveur d'impression 2008 dans un dossier temporaire du nouveau, C: Temp Drivers dans ce cas.

# Script Powershell pour l’installation en masse de pilotes.
# Créé par: Gabe Maddox - 25/03/2019
# Dernière édition par: Gabe Maddox - 4/9/219

# Variable qui définit le répertoire de travail. Définissez ceci sur le dossier racine avec les pilotes.
# C'EST À DIRE. C:  Temp  les pilotes sont-ils dans C:  Temp  Drivers
$ DRIVERLOCAL = "C:  Temp "

# Variable qui stocke l'heure / la date actuelle.
$ Date = Get-Date

# Crée le fichier journal dans le répertoire de travail défini dans $ DRIVERLOCAL. Ecrasera tous les fichiers de log précédents.
# Note également l'heure à laquelle le script commence.
Write-Output "Start: $ Date" | Out-File -FilePath $ DRIVERLOCAL  Driver_Install.txt -Encoding Ascii -Force

# Ce bloc démarre la transcription Powershell pour enregistrer la sortie / les actions du script.
$ ErrorActionPreference = "SilentlyContinue"
Stop-Transcript | out-null
$ ErrorActionPreference = "Continuer"
Start-Transcript -path $ DRIVERLOCAL  Driver_Install.txt -Append

# Sélectionne les fichiers du répertoire de travail, y compris les sous-répertoires. Filtre les fichiers afin que seuls les fichiers
# contenant .inf dans le nom complet sont sélectionnés. Filtre également les dossiers contenant le nom .inf dans le nom à l'aide de
# le où ! Commande $ _. PSIsContainer.
Get-ChildItem "$ DRIVERLOCAL" -Recurse -Filter "* .inf" | où  ! $ _. PSIsContainer |

# Pour la boucle qui exécute le bloc de script sur chaque fichier sélectionné dans la section ci-dessus.
ForEach-Object 
PNPUtil.exe / add-driver $ _. FullName / install

# Ceci arrête la transcription de Powershell.
Stop-Transcript

# Note l'heure de fin des scripts.
$ Date = Get-Date
Write-Output "End: $ Date" | Out-File -FilePath $ DRIVERLOCAL  Driver_Install.txt -Encoding Ascii -Append

Cela a eu les pilotes dans le magasin de pilotes.

Partie 2 – Enregistrer les imprimantes à migrer

Nous avons utilisé ce script:
https://gallery.technet.microsoft.com/scriptcenter/Save-printer-server-90a75354

saisir toutes les informations sur l’imprimante et la stocker dans un fichier CSV.

Partie 3 – Réinstaller les imprimantes

Nous avons utilisé ce fichier pour réinstaller les imprimantes:

https://gallery.technet.microsoft.com/scriptcenter/Migrate-printers-script-ab044c5f

Cependant, nous avons rencontré le problème suivant: le script ne voyait pas les pilotes et échouait. Nous avons fini par réinstaller manuellement les pilotes car notre calendrier était serré, mais après quelques recherches / digging / pleurs, j’ai été en mesure de modifier légèrement le script afin qu’il installe les pilotes du magasin de pilotes dans le dossier de spouleur le script pouvait les voir. Avec le recul, c’était bêtement simple, mais être novice au mieux s’agissant de PowerShell, c’était un cauchemar. > __>

Tout ce que j'avais à faire était d'ajouter la ligne suivante à la boucle for du script:

Add-PrinterDriver -Name $ printer.DriverName

Pour que la boucle for ressemble à ceci:

foreach ($ imprimante dans $ imprimantes) 
# Ajoute le pilote d'imprimante à partir du magasin de pilotes.
    Add-PrinterDriver -Name $ printer.DriverName

    $ port = get-printerport -ComputerName $ SourceComputerName  

Je suis sûr qu'il existe des moyens meilleurs ou plus élégants de le faire, mais cela a fonctionné pour nous. Certes, cela semble prendre 5 à 10 secondes par imprimante à l’étape 3, c’est quelque chose qui devrait être fait lorsque vous avez suffisamment de temps et que vous n’êtes pas programmé.

Si quelqu'un a un meilleur moyen de le faire ou des conseils sur la façon de l'améliorer, faites-le moi savoir. J'aime toujours être en mesure de rationaliser / améliorer mes manuscrits.

J'espère que cela aidera d'autres personnes lorsqu'elles sont contraintes de mettre à niveau leurs anciens serveurs d'impression comme nous le devions. =)

Scripts de migration du serveur d'impression: PowerShell – Bien choisir son serveur d impression
4.9 (98%) 32 votes