Installer des logiciels en ligne de commande sur Windows Server

En l'absence d'une interface graphique et d'un navigateur sur notre serveur en mode core, nous sommes obligés de trouver des alternatives afin de pouvoir installer un logiciel en ligne de commande.

Plusieurs options sont possibles, en voici deux :

  • Télécharger les sources à partir d'un autre serveur et les copier sur le serveur Core pour l'installation, au format MSI ou EXE, par exemple
  • Utiliser un gestionnaire de paquets en ligne de commande comme Chocolatey

J'aurais pu mentionner WinGet qui est le nouveau gestionnaire de paquets de Microsoft, sauf que son installation n'est pas si simple pour le moment sur Windows Server. En fait, il manque certaines dépendances. A voir comment cela évolue par la suite, mais en attendant Chocolatey est facilement installable alors il garde ma préférence.

Avant d'installer un logiciel sur un serveur en mode Core, vérifiez sa compatibilité car l'absence de certains composants, notamment graphique, risque de poser des problèmes.

I. Chocolatey sur Windows Server

A. Installer Chocolatey sur Windows Server

Comme sur un poste de travail Windows, l'installation de Chocolatey sur Windows Server s'effectue à l'aide d'une commande fournie sur le site officiel. Voici la commande à exécuter sur notre serveur Core :

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco feature enable -n allowGlobalConfirmation

Ensuite, il ne reste plus qu'à passer à l'utilisation du gestionnaire de paquets. En consultant l'aide, on peut obtenir les commandes principales (voir ci-dessous). Pour obtenir de l'aide sur une commande spécifique, par exemple "choco search" qui permet de rechercher un logiciel, on utilisera cette syntaxe :

choco search -help

B. Installer un logiciel sur Windows Server via Chocolatey

Prenons l'exemple de 7-Zip, un logiciel très répandu pour gérer des archives ZIP sur Windows. Comme il fonctionne sur Windows Server en mode core, autant que l'on en profite. On peut rechercher sa présence dans les dépôts de Chocolatey avec la commande suivante :

choco search 7-zip

De nombreux résultats sont retournés, mais on a tout simplement un paquet nommé "7zip" qui sert à l'installer. La mention "[Approved]" en fin de ligne est importante pour ne prendre que des paquets vérifiés, approuvés.

Afin d'installer 7-zip, utilisez la commande suivante :

choco install 7zip

A partir des sources en ligne, l'installation s'effectue en quelques secondes.

Installation d'un logiciel sur Windows Server avec Chocolatey
Installation d'un logiciel sur Windows Server avec Chocolatey

A tout moment, vous pouvez effectuer la mise à jour de 7-Zip vers une version plus récente (quand il y en aura une disponible) avec la commande suivante :

choco upgrade 7zip

Pour utiliser 7-Zip, on peut passer par la ligne de commande du logiciel via 7z.exe ou lancer le gestionnaire graphique de 7-Zip. Pour cela, il faut exécuter le binaire "7zFM.exe" qui se situe dans le répertoire "C:\Program Files\7-Zip\" comme ceci :

& 'C:\Program Files\7-Zip\7zFM.exe'

On peut alors profiter de 7-Zip depuis notre serveur Windows Server 2022 en mode core ! A tout moment, vous pouvez désinstaller un paquet obtenu à partir de Chocolatey avec la commande "choco uninstall" suivie du nom du paquet. Par exemple :

choco uninstall 7zip

Il ne restera plus qu'à valider avec "Y" puis Entrée et le paquet sera désinstallé. Passons maintenant à la seconde méthode. Pour en savoir plus au sujet de Chocolatey, je vous recommande la lecture de cet article :

II. Installation à partir d'un EXE ou MSI

A. Transférer les sources d'installation sur le serveur CORE01

Sur notre poste source nommé SRV01, il sera utile de télécharger les sources du logiciel, que ce soit 7-Zip ou un autre. Pour commencer, nous allons organiser le stockage des fichiers d’installation sur notre serveur, et ensuite envoyer un premier logiciel sur le serveur.

On commence par créer un répertoire nommé « Sources » à la racine du serveur CORE01, afin d’y stocker les fichiers sources pour les installations.

C’est également l’occasion de (re)voir comment créer un répertoire en ligne de commande. La création d’un répertoire s’effectue grâce à la commande « mkdir », mais il faut oublier cette commande et préférer l’utilisation de PowerShell ! On va utiliser le commandlet « New-Item » qui permet de créer des objets de différents types, notamment des dossiers.

Il suffit d’indiquer le nom de l’objet et son type, et il sera créé (au sein du répertoire courant s’il n’y a pas de chemin spécifié). La commande sera :

New-Item -Name Sources -ItemType Directory

Un répertoire « Sources » vient d’être créé dans « C:\ ». Pour vérifier la création du répertoire, on liste tous les objets enfants du répertoire courant (à savoir « C:\ »). Il suffit d’exécuter la commande « Get-ChildItem » que l’on peut traduire par « Obtenir les objets enfants ».

Comme astuce, je précise qu’il est possible d’utiliser « gci » comme commande en tant que diminutif (alias) de la commande « Get-ChildItem ».

Note : Historiquement, la commande DOS correspondante est « dir ».

Quel logiciel allons-nous installer ?

À titre d’exemple, nous allons installer le logiciel « 7-Zip » (déjà installé puis désinstallé précédemment) sur le serveur CORE01. Après avoir téléchargé l’exécutable du logiciel depuis SRV01, on va l’envoyer sur le serveur distant.

Pour l’envoyer, il suffit de se connecter sur le serveur CORE01 en utilisant le chemin UNC (via l’adresse IP ou le nom de l’hôte, comme vous voulez), à partir du serveur SRV01.

Note : Un chemin UNC (Universal Naming Convention) est un chemin « conventionné » vers une ressource accessible par le réseau.

On utilisera le chemin suivant :

\\CORE01\c$

Lorsque l’on souhaite accéder au lecteur système de Windows, à distance, on précise « C » suivit de « $ » puisqu’il s’agit d’un partage administratif caché. Sous Windows, on peut cacher un partage en ajoutant un « $ » à la fin de son nom. L'objectif étant de copier-coller l'installeur de 7-zip dans C:\Sources.

B. Installation du logiciel

Maintenant on repasse sur CORE01, et on va y rester. Accédez au répertoire « Sources » grâce à la commande Set-Location (ou « cd ») qui permet de se déplacer dans l’arborescence de données.

Set-Location C:\Sources

Exécutez l’installeur de 7-Zip en appuyant sur la touche TAB (tabulations) du clavier qui va autocompléter la ligne de commande et vous proposer l’exécution du fichier « .exe » (ou du ".msi" en fonction du format).

De manière générale, pour exécuter un « .exe » il faut utiliser la formule suivante :

.\nom-du-exe.exe

L’assistant d’installation de 7-Zip va démarrer… Dans le cas où l'on aurait un installeur au format MSI, on pourrait réaliser une installation silencieuse grâce à l'option "/quiet" :

 .\7z2107-x64.msi /quiet

Il faut garder à l’esprit que pour démarrer une application, il faudra exécuter directement le lanceur positionné dans le répertoire d’installation de l’application. De ce fait, il est important de regarder où s’installe le logiciel lors de l’installation.

Pour démarrer le logiciel, le principe reste le même par rapport à la méthode précédente basée sur l'utilisation de Chocolatey.

Félicitations ! Vous venez d’installer une application tierce sur Windows Server Core. Mise à part pour des applications spécifiques que l'on ne trouve pas facilement sur Internet, la méthode via Chocolatey me semble la plus adaptée pour installer un logiciel sur Windows Server Core.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 3496 posts and counting.See all posts by florian