3- Déploiement de .EXE
a)Mise en place des .exe dans le dossier
Pour cette partie, j'ai donc utilisé 7zip comme exemple, mais attention, ce n'est pas tous les exécutables qui peuvent fonctionner avec cette méthode. Par exemple, CrystalDiskInfo, qui permet de voir la vie des disques durs, ne peut être installé de cette façon.
J'ai donc téléchargé 7zip sur son site officiel, puis copier dans le dossier :
b)Création du script
Après la copie de 7zip, nous allons donc ouvrir "Windows PowerShell ISE" :
Une fois ouvert, nous allons donc y coller ça (bien sûr si vous installez un autre logiciel, modifiez cela pour le 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 copié, il faut l'enregistrer dans le dossier partagé, vous faites Ctrl+s ou Fichier > 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 aller dans "Configuration ordinateur > Paramètres Windows > Scripts (démarrage/arrêt) > Démarrage" et on double-clique sur "Démarrage". Une fois cela fait, on 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 fait 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és ici, nous allons ouvrir "Activer l'exécution des scripts" et cocher "Activé", puis faire "appliqué".
Nous n'avons plus rien à faire sur Windows Server et on passe maintenant à un client Windows 10.
D)Test
Ce test va être simple, on va juste redémarrer Windows et cela devrait redescendre tout seul. Dans mon cas, 7zip est redescendu tout seul assez rapidement :
No Comments