15/11/2024

AstucesLogicielsWindows ClientWindows Server

Utilisation d’une liste d’installation pour Chocolatey

I. Présentation

Dans cet article je vous donne une petite astuce pour faciliter le déploiement et l'installation de plusieurs package via la solution Chocolatey sous Windows. Pour rappel, Chocolatey est une solution de déploiement et gestion rapide des logiciels sous Windows , une présentation plus détaillée est faite dans cet article : Chocolatey : Installer des logiciels en ligne de commande.

J'utilise ce mécanisme pour redéployer facilement un poste de travail (hors domaine) et disposer rapidement d'outils de travail, il m'est donc nécessaire d'avoir une liste préconçue et facilement modifiable.

➡ Découvrez également l'alternative WinGet

II. Utilisation d'une liste JSON

Cette solution utilise simplement une liste sous forme JSON qui contient le noms des paquets à installer, ainsi qu'un script Powershell (.ps1) en charge de traiter cette liste. Voici à quoi ressemble le fichier que je nomme packages.json :

{
 "packages": [
   {"name": "xmind"},
   {"name": "notepadplusplus"},
   {"name": "conemu"},
   {"name": "golang"},
   {"name": "adobereader"},
   {"name": "keepass"},
   {"name": "veracrypt"},
   {"name": "zim"},
   {"name": "virtualbox"},
   {"name": "libreoffice"},
   {"name": "zim"},
   {"name": "sublimetext3"},
   {"name": "eraser"}
   ]
}

Ensuite, un script Powershell (ps1) que je nomme install.ps1 contient simplement les lignes nécessaire à la récupération de ce fichier JSON et pour chaque paquet, exécute la ligne de commande d'installation Chocolatey :

# Récupérer la liste JSON dans le fichier packages.json
$p = Get-Content -Raw -Path '.\packages.json' |ConvertFrom-Json

# Installation de chaque application
foreach ($package in $p.packages.name) {choco install $package -y --force --ignore-checksums}

Lors de l'exécution, il faut que les deux fichiers soient dans le même répertoire. On pourrait également imaginer devoir passer en paramètre du script install.ps1 le nom du fichier JSON (au cas ou plusieurs seraient à notre disposition :

$myargs = @{
json = "package.json"
}
Get-ChildItem @myargs
$p = Get-Content -Raw -Path $json |ConvertFrom-Json

# Installation de chaque application
foreach ($package in $p.packages.name) {choco install $package -y --force --ignore-checksums}

L'utilisation serait alors la suivante :

./install.ps1 -json package_utilisateur.json

J'espère que cette petite astuce vous sera utile 🙂

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Utilisation d’une liste d’installation pour Chocolatey

  • Bonjour,

    Super article, très clair et efficace. Par contre je doute sur son utilité, mais je loupe surement quelque chose.

    Sinon une simple ligne de commande ave toutes les applis à installer me semble plus « simple » et moins fastidieux.

    On a le meme resultat juste avec cette ligne de commande basic:
    choco install googlechrome skype 7zip vlc filezilla adobereader xmind notepadplusplus conemu golang adobereader keepass veracrypt zim virtualbox libreoffice zim sublimetext3 erase -y -f

    Non ?

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.