Skip to main content

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 :

image.png

b)Création du script

 Après là copie de 7zip, nous allons donc ouvrir "Windows powershell ISE" :

image.png

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é :

image.png

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 :

image.png

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 :

image.png

On fais donc "OK" puis "Appliqué :

image.png

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é".

image.png

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 :

image.png