PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Comment déployer un logiciel avec Chocolatey ?

mardi 16 mars 2021 à 12:44

I. Présentation

On se retrouve aujourd'hui pour le troisième épisode de la série sur l'installation de logiciels sur les postes clients. Après avoir vu comment exploiter les GPO pour déployer des logiciels, aussi bien au format MSI qu'au format EXE, aujourd'hui je vais vous présenter un outil différent : Chocolatey.

Retrouvez les deux épisodes précédents :

⭐ Episode 1 - Comment déployer des logiciels au format MSI par GPO ?

⭐ Episode 2 - Comment déployer des logiciels au format EXE par GPO ?

Chocolatey est gestionnaire de paquets pour Windows qui n'est pas sans rappeler les équivalents sous Linux comme Aptitude sous Debian et Ubuntu, avec la fameuse commande "apt-get install". Sur le même principe, Chocolatey va permettre d'installer des logiciels sur vos machines à partir d'un dépôt. Par défaut, les dépôts communautaires de Chocolatey accessibles sur Internet.

Chocolatey est un outil gratuit et communautaire même s'il existe également des versions payantes (Pro, Architect et Business) qui permettent d'aller encore plus loin. Dans cet article, et pour commencer, on va utiliser la version gratuite. On l'utilisera pour déployer des logiciels en mode silencieux sur des postes clients.

Note : dans cet article, je vais utiliser un poste client Windows 10, mais il est compatible avec toutes les versions de Windows depuis Windows 7 et Windows Server 2003.

Microsoft a également lancé son propre gestionnaire de paquets, vous pouvez retrouver mon article à son sujet :

⭐ Découvrir WinGet sous Windows 10

II. Installer Chocolatey à distance sur les machines

A. Prérequis : WinRM

Pour utiliser la gestion à distance sur une machine Windows, il est nécessaire de configurer le service WinRM. Ce service nécessite d'être actif sur la machine cible et surtout il faut créer une exception dans le pare-feu de Windows pour autoriser les connexions WinRM à partir d'un ou plusieurs hôtes.

Pour éviter de me répéter, pour cette partie-là je vous oriente vers un tutoriel que j'ai écris à ce sujet il y a quelques années et qui fonctionne toujours aujourd'hui : Configurer WinRM par GPO.

winrmgpo0

C'est une étape indispensable pour réaliser des installations à distance à partir de la commande "Invoke-Command" de PowerShell.

B. Installer Chocolatey par script PowerShell

Commençons par installer Chocolatey sur nos machines, à distance, à l'aide de PowerShell. Pour déployer le gestionnaire de paquets en lui-même sur nos machines, on pourrait s'appuyer sur une GPO avec un script qui s'exécute au démarrage de la machine (comme nous avons vu dans l'épisode précédent). Pour varier les plaisirs, on va l'installer avec PowerShell et Invoke-Command.

Commençons par récupérer à partir de l'Active Directory, la liste des machines sur lesquelles installer Chocolatey. Ici, je récupère les ordinateurs à partir de l'OU racine "OU=PC,DC=it-connect,DC=local" :

$Computers = Get-ADComputer -Filter * -SearchBase "OU=PC,DC=it-connect,DC=local" | Select-Object -ExpandProperty Name

Néanmoins, on peut aussi créer une liste d'ordinateurs manuellement en créant un tableau comme ceci :

$Computers = @("PC-W10","PC-W10-2","PC-W10-3")

Ensuite, on va s'appuyer sur Invoke-Command pour établir une connexion sur chaque poste client dans le but d'effectuer l'installation de Chocolatey. Cette installation s'effectue à l'aide du script officiel disponible sur le site Chocolatey à l'adresse suivante si vous souhaitez vérifier son code au préalable : Choco Install PS1

Invoke-Command -ComputerName $Computers -ScriptBlock {
       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

}

La commande "choco feature enable -n allowGlobalConfirmation" permet d'activer l'approbation automatique des différentes installations, cela évite d'avoir la demande de confirmation à chaque fois.

chocolatey

Sur la machine "PC-W10", si j'ouvre une console et que j'exécute "choco.exe", on peut voir que le gestionnaire de paquets s'est bien installé 😉

Chocolatey est prêt à l'emploi sur nos machines, voyons maintenant comment en tirer profit...

III. Déployer un logiciel à distance avec Chocolatey

A. La liste des paquets Chocolatey

La liste des paquets installables avec Chocolatey est disponible sur le site chocolatey.org à l'adresse ci-dessous. Il y a plus de 8 000 paquets uniques, disponibles dans les dépôts communautaires. Prenez l'habitude d'installer seulement les paquets avec un icône "vert" car il s'agit des paquets vérifiés.

⭐ Chocolatey - Packages

Par exemple, Notepad++ est disponible et nous l'utiliserons en guise de cobaye. Il est intéressant de voir également que la commande d'installation est directement fournie, ici :

choco install notepadplusplus.install

Concrètement, si vous exécutez cette commande sur une machine où Chocolatey est installé, le logiciel va s'installer.

Une autre manière de rechercher un paquet est d'installer le client Chocolatey GUI sur une machine et de parcourir la liste des paquets. Il s'installe avec cette commande :

choco install chocolateygui

Lorsque l'on accède aux détails d'un paquet, on obtient la description mais aussi l'identifiant du paquet (sur la gauche) : ce qui donne le nom à utiliser avec "choco install".

Sur une machine où Chocolatey GUI est présent, il sert à installer des logiciels directement en local.

B. Le couple gagnant : Invoke-Command et choco install

A l'aide d'un simple script PowerShell, on va pouvoir installer un logiciel à distance avec Chocolatey sur un ensemble de machines. Nous allons réutiliser notre variable $Computers qui contient une liste de machines obtenue directement à partir de l'Active Directory.

$Computers = Get-ADComputer -Filter * -SearchBase "OU=PC,DC=it-connect,DC=local" | Select-Object -ExpandProperty Name

Ensuite, on va définir un bloc de code à exécuter sur chaque machine. Cela commence par la commande "choco install" suivie du nom du paquet, en l'occurrence ici "notepadplusplus.install" pour Notepad++. Un fichier de log sera généré à l'emplacement suivant : C:\Temp\choco.txt

Invoke-Command -ComputerName $Computers -ScriptBlock {

   choco install notepadplusplus.install | Out-File -FilePath C:\Temp\choco.txt

   if ($?) {
      Write-Output "$Env:COMPUTERNAME : Succès"
   }
   else {
      Write-Output "$Env:COMPUTERNAME : Echec"
   }
}

Le test "$?" de la condition "if" est un moyen de récupérer la présence d'une erreur, et donc de détecter un problème lors de l'installation.

Il ne reste plus qu'à enregistrer le script et à l'exécuter. Un retour sera effectué dans la console pour indiquer, pour chaque machine, si l'installation a réussie ou pas.

Note : si la commande "choco feature enable -n allowGlobalConfirmation" n'est pas exécutée sur la machine cible, il faut approuver l'installation en ajoutant "-y" à la commande d'installation : choco install notepadplusplus.install -y

Voici un aperçu du fichier de log créé en local sur chaque poste client : intéressant pour le debug dans le cas où l'application ne s'installe pas, par exemple.

Note : sur chaque machine où Chocolatey est installé, le gestionnaire de paquets gère son propre fichier de log à l'emplacement suivant : "C:\ProgramData\chocolatey\logs\chocolatey.log".

C. Déployer plusieurs logiciels avec Chocolatey

Pour déployer plusieurs logiciels, on peut tout simplement dupliquer les lignes "choco install" (et le test pour vérifier que l'installation est OK) et modifier le nom du paquet à chaque fois. On peut également faire une boucle Foreach, ce qui est plus propre, ou alors on peut aussi utiliser une liste d'installation Chocolatey, ce qui est possible avec un script PowerShell et un fichier JSON.

Si l'on reprend notre script précédent, et qu'on le fait évoluer pour ajouter une liste de logiciels à installer plutôt qu'un seul logiciel, cela donne :

$Computers = Get-ADComputer -Filter * -SearchBase "OU=PC,DC=it-connect,DC=local" | Select-Object -ExpandProperty Name

Invoke-Command -ComputerName $Computers -ScriptBlock {

   $PackagesList = @("notepadplusplus.install","vlc","foxitreader")

   Foreach($Package in $PackagesList){

      choco install $Package -y | Out-File -FilePath C:\Temp\choco-$Package.txt

      if ($?) {
         Write-Output "$Env:COMPUTERNAME - $Package : Succès"
      }
      else {
         Write-Output "$Env:COMPUTERNAME - $Package : Echec"
     }
   }
}

La variable $PackagesList contient le nom des paquets à déployer. Ensuite, une boucle ForEach permet de réaliser l'installation pour chaque application. Un fichier de log différent sera généré pour chaque logiciel et la sortie ressemblera à ça :

PC-W10 - notepadplusplus.install : Succès
PC-W10 - vlc : Succès
PC-W10 - foxitreader : Succès

D. Cibler seulement les machines en ligne

Inutile de chercher à se connecter sur une machine hors ligne, c'est-à-dire déconnectée du réseau ou alors éteinte ! Avec le script tel qu'il est pour le moment, c'est un cas que l'on va probablement rencontrer et qui n'est pas géré.

A l'aide du cmdlet Test-Connection, on va pouvoir pinger chaque machine et déterminer s'il faut déclencher l'installation ou non. Il y a deux approches :

La deuxième approche me semble plus précise si l'on doit réaliser l'installation sur un nombre important de postes. Pour une raison simple : une machine en ligne maintenant ne le sera peut être pas dans 10 minutes. Du coup, le temps de créer la liste, il sera peut être trop tard pour certains postes, même si cela se discute car un ping par machine c'est très rapide.

La commande qui va permettre de tester rapidement si une machine est joignable ou non est la suivante :

Test-Connection -ComputerName <nom-machine> -Quiet -Count 1

Ce qui donnera lieu à une condition toute simple :

if(Test-Connection -ComputerName $computer -Quiet -count 1) { <code> }else{ <code> }

En complément, on va utiliser une boucle Foreach pour parcourir la liste d'ordinateurs. Dans la commande Invoke-Command, il faudra penser à utiliser aussi $Computer au lieu de $Computers, sinon pour chaque ordinateur on va traiter tous les ordinateurs dans le tour de boucle... Le script complet tenant compte de cette évolution est le suivant :

$Computers = Get-ADComputer -Filter * -SearchBase "OU=PC,DC=it-connect,DC=local" | Select-Object -ExpandProperty Name

Foreach($Computer in $Computers){

   if(Test-Connection -ComputerName $computer -Quiet -count 1) {

      Invoke-Command -ComputerName $Computer -ScriptBlock {

         $PackagesList = @("notepadplusplus.install","vlc","foxitreader")
         Foreach($Package in $PackagesList){

            choco install $Package -y | Out-File -FilePath C:\Temp\choco-$Package.txt

            if ($?) {
               Write-Output "$Env:COMPUTERNAME - $Package : Succès"
            }
            else {
               Write-Output "$Env:COMPUTERNAME - $Package : Echec"
            }
         }
      }
   }else{
      Write-Output "$Computer n'est pas en ligne !"
   }
}

Désormais, on traite un ordinateur seulement s'il est en ligne. Dans le cas où il est hors ligne/éteint, un message s'affiche dans la console : <nom ordinateur> n'est pas en ligne !

IV. Déployer un logiciel par GPO avec Chocolatey

Un simple script PowerShell avec une seule ligne peut permettre d'installer un logiciel avec Chocolatey. Pour le coup, il n'y a pas de raison que ce script ne soit pas utilisable par GPO : ce qui offre une alternative à l'installation à distance où il faut que la machine soit allumée au moment où l'on déclenche l'installation.

Pour installer VLC Media Player, la commande ci-dessous suffit :

choco install vlc | Out-File -FilePath C:\Temp\choco.txt

Le fichier de log est facultatif, on pourrait tout simplement indiquer :

choco install vlc

Ensuite, il faut créer une nouvelle GPO qui va exécuter un script de démarrage et ajouter notre script PowerShell : nous avons déjà vu comment faire à l'occasion de l'épisode 2 pour exécuter un script qui installe un logiciel au format EXE. Le principe est le même, c'est seulement le contenu du script qui change.

Si l'on exécute plusieurs fois la même commande d'installation, Chocolatey ne perd pas de temps : il voit que le logiciel est déjà installé. Le fichier de log va contenir la ligne suivante :

vlc v3.0.12 already installed.

V. Chocolatey - Installer une version spécifique et gérer les mises à jour

Pour installer une application dans une version spécifique, et sous réserve que cette version soit disponible dans les dépôts de Chocolatey, il faut spécifier un paramètre supplémentaire lors de l'utilisation de "choco install" : --version. Par exemple, pour installer la version 7.8.9 de Notepad++ on utilisera cette commande :

 choco install notepadplusplus --version 7.8.9

Sur le site Chocolatey, lorsque l'on regarde le détail d'un package, on peut voir l'historique des versions : une bonne façon de connaître les versions disponibles.

Ensuite, pour gérer les mises à jour des paquets, il y a deux façons : mettre à jour tous les paquets ou mettre à jour un ou plusieurs paquets spécifiques.

La commande suivante permet de mettre à jour tous les paquets :

choco upgrade all

Par "tous les paquets", j'entends tous les paquets installés via Chocolatey sur la machine cible. Ensuite, on peut mettre à jour seulement un paquet spécifique :

choco upgrade <nom-paquet>

En fait, le script que l'on utilise depuis le début peut être réutilisé et adapté pour gérer les mises à jour. On commencera par remplacer "choco install" par "choco upgrade".

VI. Quelques commandes utiles pour Chocolatey

Pour finir cet article, je vous propose quelques commandes supplémentaires à connaître pour manipuler Chocolatey, même si elles sont très nombreuses. Je vous mettrai ci-dessous le lien vers l'aide globale des commandes.

Chocolatey est capable de désinstaller un paquet qu'il a installé sur une machine. Voici, par exemple, comment désinstaller Notepad++ :

choco uninstall notepadplusplus -y

Pour lister les paquets installés avec Chocolatey sur une machine, on va utiliser "choco list" avec les options -local et -r, la seconde permettant d'obtenir une vue très synthétique avec les noms et les versions.

choco list -local -r

choco list

Avant de déclencher une mise à jour des paquets sur une machine, vous pourriez avoir envie de savoir quels sont les paquets à mettre à jour ? La commande ci-dessous affiche les paquets Chocolatey qui nécessitent une mise à jour.

choco outdated

choco outdated

En complément des outils de recherche que nous avons vu, on peut rechercher un paquet directement en ligne de commandes. Par exemple, pour rechercher tous les paquets avec le terme "vlc" dans le nom :

choco search vlc

choco search

Pour finir, voici le lien vers l'aide de toutes les commandes Chocolatey :

Chocolatey - Commandes

Comme nous venons le voir, Chocolatey est un outil très intéressant et puissant, même dans sa version gratuite ! Nous n'avons pas vu toutes les possibilités dans cet article : d'autres articles sur Chocolatey suivront pour aller plus loin avec cet outil.

➡ Vous pouvez comparer les éditions de Chocolatey sur cette page : Chocolatey - Editions

The post Comment déployer un logiciel avec Chocolatey ? first appeared on IT-Connect.

Edge s’aligne sur Chrome : une mise à jour majeure toutes les 4 semaines

mardi 16 mars 2021 à 09:15

La semaine dernière, Google a modifié le cycle de développement du navigateur Chrome dans le but de proposer une nouvelle version majeure de son navigateur tous les mois. Microsoft va faire la même chose avec Edge, basé sur Chromium.

Jusqu'ici, Google publiait une mise à jour majeure de son navigateur toutes les 6 semaines. Désormais, ce sera toutes les 4 semaines, sans pour autant négliger ses processus de tests avant la publication d'une nouvelle version. Google estime avoir suffisamment progressé ces dernières années pour se permettre d'accélérer la cadence de publication. Par contre, il y a des chances que la quantité de nouveautés par version soit revue à la baisse.

Au sein de Chrome, ce nouveau cycle de développement sera en place au troisième trimestre 2021, à l'occasion de la sortie de Chrome 94. Il est à noter qu'il y a une chose qui ne change pas, c'est le rythme de publication des mises à jour de sécurité : toutes les semaines.

Google met à disposition des entreprises et des développeurs qui s'appuient sur Chromium, une alternative : Extended Stable. Ceci permet d'installer une version sur deux, de quoi diviser par deux les opérations de maintenance. Pour les développeurs, cela permet de bloquer le socle fonctionnel pendant 8 semaines au lieu de 4 semaines.

A l'instar de Chrome, Microsoft va s'aligner sur ce nouveau cycle de développement et publier une version toutes les 4 semaines. Cela se fera également à partir de la version 94 du navigateur Edge. Sur le même principe que pour Chrome, il y aura une option Extended Stable pour basculer sur un rythme de 8 semaines.

Finalement, cet effort de Google avec l'Extended Stable est très court en comparaison de la version Extended Support Release de Firefox. En effet, Mozilla assure le bon fonctionnement de ces versions destinées aux entreprises pendant 42 semaines en moyenne. Bien sûr, il y a des correctifs de sécurité entre deux versions ESR.

The post Edge s’aligne sur Chrome : une mise à jour majeure toutes les 4 semaines first appeared on IT-Connect.

Windows 10 – APC_INDEX_MISMATCH : une mise à jour corrige le bug lié aux impressions

mardi 16 mars 2021 à 08:29

Suite à la publication du Patch Tuesday de Mars 2021, de nombreux utilisateurs rencontrent des problèmes lors de l'impression sur certaines imprimantes réseau : ce qui génère un écran bleu de la mort avec le message APC_INDEX_MISMATCH. Microsoft vient de publier une mise à jour pour corriger ce bug !

La mise à jour que Microsoft vient de publier est optionnelle, cela signifie qu'elle ne sera pas installée automatiquement sur toutes les machines. Pour l'installer manuellement, il faut se rendre dans "Paramètres Windows > Mise à jour et sécurité > Windows Update" et effectuer une recherche manuelle de mise à jour. Ensuite, la mise à jour devrait apparaître en tant mise à jour de qualité optionnelle, il suffira alors de déclencher le téléchargement et l'installation.

Il y a une autre manière de faire : se rendre directement sur le catalogue Microsoft pour télécharger soi-même la mise à jour et l'installer. Voici les liens en fonction des différentes versions de Windows et les noms de KB correspondants :

✔ KB5001567 pour Windows 10 v2004 (20H2)
✔ KB5001566 pour Windows 10 v1909
✔ KB5001568 pour Windows 10 v1809 (Pro, Entreprise, Education, LTSC 2019)
✔ KB5001565 pour Windows 10 v1803 (Pro, Entreprise, Education)

Ce qui devrait permettre aux entreprises qui utilisent des imprimantes Kyocera, Ricoh ou encore Dymo de retrouver un peu de sérénité ! Vous êtes nombreux à nous faire des retours suite à l'annonce de ce bug, alors même s'il semble limité à certaines marques et pilotes, l'impact n'est pas négligeable !

Microsoft de son côté a confirmé que ce problème touchait certains pilotes d'impression de Type 3, mais que les pilotes de Type 4 ne seraient pas affecté.

Pour rappel, c'est l'installation des mises à jour cumulatives suivantes qui est à l'origine de ce bug sur Windows : KB5000802 pour les dernières versions de Windows 10 et Windows Server, et pour les versions plus anciennes : KB5000808, KB5000822 et KB5000809. Si vous n'avez pas encore installé ce correctif mensuel, vous êtes "protégé" contre ce bug mais attention lorsque vous allez le libérer sur vos machines.

Source

The post Windows 10 – APC_INDEX_MISMATCH : une mise à jour corrige le bug lié aux impressions first appeared on IT-Connect.

La montre connectée OnePlus Watch sera présentée également le 23 mars !

lundi 15 mars 2021 à 18:00

OnePlus va présenter officiellement ses nouveaux smartphones de la série OnePlus 9 le 23 mars prochain. Ce sera également l'occasion de présenter un autre produit : la montre connectée OnePlus Watch.

Depuis le temps que l'on entends parler d'elle, la montre connectée OnePlus va enfin être dévoilée ! C'est sur Twitter que OnePlus a teasé la sortie de sa future montre : "Est-ce que vous voulez qu'on vous Montre quelque chose de cool ? Ne soyez pas en retard", avec l'heure "23:03" qui fait référence au 23 mars, sans aucun doute, et un jeu de mot au passage "On vous la montre ?".

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8">

Côté smartphone, la série OnePlus 9 sera très certainement déclinée en trois modèles : OnePlus 9, OnePlus 9 Pro et OnePlus 9R. Concernant la montre connectée, il y a très peu d'informations à se mettre sous la dent à son sujet... On sait que le cadran sera rond, et c'est tout. Il y a des rumeurs quant au système d'exploitation de la montre : ce ne serait pas Wear OS, le système de Google dédié aux objets connectés, mais un autre système. Finalement, ce ne serait pas si mal !

Rendez-vous dans une grosse semaine pour en savoir plus sur les nouveaux produits OnePlus...

Source

The post La montre connectée OnePlus Watch sera présentée également le 23 mars ! first appeared on IT-Connect.

Google corrige une faille Zero Day en urgence dans Chrome 89

lundi 15 mars 2021 à 11:05

Google a déployé la mise à jour 89.0.4389.90 pour son navigateur Chrome dans le but de corriger 5 failles de sécurité, dont une faille Zero Day qui est déjà exploitée par les pirates.

Parmi les 5 vulnérabilités corrigées par cette nouvelle version, il y en a 3 classées comme importantes. Il y en a une qui doit retenir particulièrement notre attention, voici son petit nom : CVE-2021-21193. Cette faille se situe au sein du moteur de rendu Blink et il s'agit d'un problème de gestion de la mémoire qui permet l'exécution de code malveillant sur la machine où tourne Chrome.

Cela devient une habitude pour Google de publier des mises à jour en urgence sur des failles Zero-Day pour Chrome : c'est déjà la troisième fois cette année. Début février, il y a eu une faille corrigée dans le moteur JavaScript V8 et ces derniers jours, à l'occasion de la sortie de Chrome 89, Google avait corrigé une vulnérabilité dans le composant WebAudio. À croire qu'il y a un correctif qui était passé à la trappe lors de la compilation... 😁

D'ailleurs, Chrome 89 améliore la gestion des ressources sur Windows, notamment dans la consommation de la mémoire. Avec Chrome 89, Google a réduit de 22% la consommation de mémoire de son navigateur sous Windows. En complément, Mark Chang, chef de produit Chrome, affirme que la nouvelle version permet de réduire de 8% la quantité de mémoire consommée par le moteur de rendu et de 3% la sollicitation du GPU.

Dans le même temps, Chrome sur Android s'enrichit d'une nouvelle fonctionnalité qui lui permet de prévisualiser une page qui se cache derrière un lien sans quitter la page actuelle. En effectuant un appui long sur un lien situé dans une page, on peut accéder à une nouvelle option de prévisualisation de la page de destination. Une option intéressante sur mobile.

Avez-vous pu constater une amélioration dans la gestion de la RAM sur Windows ?

Source

The post Google corrige une faille Zero Day en urgence dans Chrome 89 first appeared on IT-Connect.