Powershell – word : ouvrir, modifier et enregistrer sous …

Nous avions une problématique lors de l’arrivée d’un employé (chose fréquente dans un hôpital, avec les internes, les cdd, les intérimaires, etc …) liée à la création d’un compte ad et des droits associés : Un outil avait été créé pour automatiser au maximum toute la procédure, mais il restait a créer manuellement la charte utilisateur, en partant d’un modele word et en modifiant le nom, le prénom, le compte, le mot de passe, et enfin en enregistrant le document au bon endroit avec le nom de la personne, ouf …

Pour éviter cette tache laborieuse, un petit coup de powershell inséré dans le script de création du compte et le tour est joué !

Je le donne brut de fonderie, apres j’explique :

$Word = new-object -com word.application
$Word.visible = $False
$OpenDoc = $Word.documents.Open(« \\chemin réseau\nom_du_fichier.docx »)
$Selection = $Word.selection
$Selection.Find.Execute(« Chaine_à_remplacer »,$False,$True,$False,$False,$False,$True,1,$False, »texte de remplacement »,2)
$nomcharte = $variable + « .docx »
$OpenDoc.SaveAs([ref] »\\Chemin Réseau 2\$nomcharte »)
$OpenDoc.close();

La partie intéressante, c’est la commande $Selection.Find.Execute. Elle est décrite chez Microsoft

C’est cette commande qui va chercher et remplacer une chaine de caractère par une autre. Pour notre probleme, je l’utilise plusieurs fois : une fois pour le nom, une fois le prénom, une autre le compte et enfin le mot de passe.

La commande Saveas, me permet ensuite de sauvegarder le document sous le nom voulu, et à l’endroit souhaité. Et voilà, une charte informatique personnalisée et correctement identifiée (oui c’est basique mais ça nous fait gagner 5 minutes à chaque fois ^_^ )

Ps : j’ai remplacer les arguments des commandes par des valeurs fixes ici, mais dans notre script nous utilisons évidemment des variables qui contiennent les bonnes valeurs …

Une réflexion sur « Powershell – word : ouvrir, modifier et enregistrer sous … »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *