3- Déploiement de .EXE
a)Mise en place des .exe dans le dossier
Pour cette parti, j'ai donc utilisé 7zip comme exemple mais attention, ce n'est pas tous les exécutable qui peuvent fonctionné avec cette méthode. Par exemple, crystaldiskinfo qui permet de voir la vie des disques dur, ne peux ê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 là copie de 7zip, nous allons donc ouvrir "Windows powershell ISE" :
Une fois ouvert, nous allons donc y coller ça (bien sur si vous installé un autre logiciel, modifier cela pour le votre) :
### 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, il faut l'enregistré dans le dossier partagé, vous fait crtl+s ou fichier>enregistré :
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 faireon cliquedouble droitclic sur "ajouté un script"Démarrage". Une fois cela fait, on fais ava 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 :