3- Déploiement de .EXE
a)Mise en place des .exe dans le dossier
Pour cette parti,partie, j'ai donc utilisé 7zip comme exempleexemple, mais attention, ce n'est pas tous les exécutablecutables qui peuvent fonctionnéfonctionner avec cette méthode. Par exemple, crystaldiskinfoCrystalDiskInfo, qui permet de voir la vie des disques dur,durs, ne peuxpeut être installé de cette façon.
J'ai donc téléchargé 7zip sur son site officielofficiel, puis copier dans le dossier :
b)Création du script
Après làla copie de 7zip, nous allons donc ouvrir "Windows powershellPowerShell ISE" :
Une fois ouvert, nous allons donc y coller ça (bien sursûr si vous installéinstallez un autre logiciel, modifiermodifiez cela pour le votre)vôtre) :
### Variables
# Chemin vers le partage qui contient l'exécutable
$SharedFolder = "\\WIN-SRV-ML150-G\Logiciel$"
# Chemin vers le dossier temporaire local sur le poste
$LocalFolder = "C:\TEMP"
# Nom de l'exécutable
$ExeName = "7z2409-x64.exe"
# Argument(s) à associer à l'exécutable
$ExeArgument = "/S" # pour ordonné une installation silencieuse
# Version cible de l'exécutable (obtenue sur une installation manuelle)
$ExeVersion = "24.09"
# Chemin vers l'exécutable une fois l'installation terminée
$ExeInstallPath = "C:\Program Files\7-Zip\7zFM.exe"
# Le logiciel est-il déjà installé dans la bonne version ?
$InstalledVersion = (Get-ItemProperty -Path "C:\Program Files\7-Zip\7zFM.exe" -ErrorAction SilentlyContinue).VersionInfo.FileVersion
if(($InstalledVersion -eq $null) -or ($InstalledVersion -ne $null -and $InstalledVersion -ne $ExeVersion)){
# Si $InstalledVersion n'est pas null et que la version est différente : c'est qu'il faut faire une mise à jour
if($InstalledVersion -ne $null){
Write-Output "Le logiciel va être mis à jour : $InstalledVersion -> $ExeVersion"
}
# Si le chemin réseau vers l'exécutable est valide, on continue
if(Test-Path "$SharedFolder\$ExeName"){
# Créer le dossier temporaire en local et copier l'exécutable sur le poste
New-Item -ItemType Directory -Path "$LocalFolder" -ErrorAction SilentlyContinue
Copy-Item "$SharedFolder\$ExeName" "$LocalFolder" -Force
# Si l'on trouve bien l'exécutable en local, on lance l'installation
if(Test-Path "$LocalFolder\$ExeName"){
Start-Process -Wait -FilePath "$LocalFolder\$ExeName" -ArgumentList "$ExeArgument"
}
# On supprime l'exécutable à la fin de l'installation
Remove-Item "$LocalFolder\$ExeName"
}else{
Write-Warning "L'exécutable ($ExeName) est introuvable sur le partage !"
}
}else{
Write-Output "Le logiciel est déjà installé dans la bonne version !"
}
Une fois cela copier,copié, il faut l'enregistréenregistrer dans le dossier partagé, vous faitfaites crtl+Ctrl+s ou fichierFichier >enregistré Enregistrer :
c)Création de la GPO
Comme pour les .MSI, nous allons crée une GPO que je vais noté celle fois si, 7zip.exe :
Puis nous allons allé dans "Configuration ordinateur > Paramètres Windows > Scripts (démarrage/arrêt) > Démarrage" et on double clic sur "Démarrage". Une fois cela fait, on fais va dans l'onglet "Scripts PowerShell", on lui spécifie qu'il doit "Exécuter les scripts Windows PowerShell en premier" et on Ajoute le script :
On fais donc "OK" puis "Appliqué :
Microsoft désactive par défaut les scripts pour des questions de sécurité, nous allons donc spécifier dans la même GPO, l'activation de l'exécution des scripts :
Configuration ordinateur > Modèle d'administration > Composants Windows > Windows PowerShell
Une fois arrivé ici, nous allons ouvrir "Activer l'exécution des scripts" et coché "Activé" puis faire "appliqué".
Nous n'avons plus rien n'a faire sur Windows server et on passe maintenant à un client Windows 10.
D)Test
Ce test va être simple, on va juste redémarré Windows et cela devrais redescendre tous seul. Dans mon cas 7zip est redescendu tous seul assez rapidement :