Modules supplémentaires

Il est possible d'ajouter des fonctionnalités à Powershell à l'aide de modules supplémentaires. Certains modules sont inclus avec des fonctionnalités avancées de Windows, d'autres sont disponibles sur Le PowerShell Gallery (https://www.powershellgallery.com/)

Mises à jour Windows

Installation

Le module "PSWindowsUpdate" permet de facilement gérer, automatiser et déclencher à distance des tâches en lien avec les mises à jour Windows. L'installation du module se déroule comme suit et doit être effectuée dans un terminal Powershell exécuté en tant qu'administrateur.

PS C:\WINDOWS\system32> Install-Module PSWindowsUpdate 

Le fournisseur NuGet est requis pour continuer
PowerShellGet requiert le fournisseur NuGet, version 2.8.5.201 ou ultérieure, pour interagir avec les référentiels
NuGet. Le fournisseur NuGet doit être disponible dans « C:\Program Files\PackageManagement\ProviderAssemblies » ou «
C:\Users\Info\AppData\Local\PackageManagement\ProviderAssemblies ». Vous pouvez également installer le fournisseur
NuGet en exécutant la commande « Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force ». Voulez-vous
que PowerShellGet installe et importe le fournisseur NuGet maintenant ?
[O] Oui  [N] Non  [S] Suspendre  [?] Aide (la valeur par défaut est « O ») : O

Référentiel non approuvé
Vous installez les modules à partir d'un référentiel non approuvé. Si vous approuvez ce référentiel, modifiez sa valeur
 InstallationPolicy en exécutant l'applet de commande Set-PSRepository. Voulez-vous vraiment installer les modules à
partir de PSGallery ?
[O] Oui  [T] Oui pour tout  [N] Non  [U] Non pour tout  [S] Suspendre  [?] Aide (la valeur par défaut est « N ») : T

PS C:\WINDOWS\system32>

Une fois installé, le module peut être importé et sera prêt à l'utilisation à l'aide de la commande suivante :

#Permettre l'exécution de scripts
Set-ExecutionPolicy Unrestricted
#Importation du module installé
Import-Module PSWindowsUpdate

Utilisation

Toutes les commandes supportent l'argument "-ComputerName" pour exécuter ces actions sur un ordinateur distant. Si l'argument n'est pas mentionné, les actions seront entreprise sur la machine exécutant la commande.

Get-WindowsUpdate

La commande Get-WindowsUpdate permet de rechercher des mises à jour Windows disponibles de façon granulaire ou globale. Sans paramètres, elle cherchera toutes les mises à jour disponible. Dans le cas suivante, une mise à jour de pilote d'affichage est disponible.

PS C:\WINDOWS\system32> Get-WindowsUpdate -Verbose
COMMENTAIRES : VIDANGE-WINDOSE (2025-01-19 15:45:21): Connecting to Windows Update server. Please wait...
COMMENTAIRES : Found [1] Updates in pre search criteria                                                                      COMMENTAIRES : Found [1] Updates in post search criteria

ComputerName Status     KB          Size Title
------------ ------     --          ---- -----
VIDANGE-W... -------                24MB Broadcom Inc. - Display - 9.17.8.9

Il est ensuite possible de procéder au téléchargement sans installer la mise à jour si on mentionne le paramètre -Download

PS C:\WINDOWS\system32> Get-WindowsUpdate -Download -Verbose
COMMENTAIRES : VIDANGE-WINDOSE (2025-01-19 15:51:08): Connecting to Windows Update server. Please wait...
COMMENTAIRES : Found [1] Updates in pre search criteria
COMMENTAIRES : Found [1] Updates in post search criteria

Confirmer
Êtes-vous sûr de vouloir effectuer cette action ?
Opération « (2025-01-19 15:51:15) Broadcom Inc. - Display - 9.17.8.9[24MB] » en cours sur la cible « VIDANGE-WINDOSE ».
[O] Oui  [T] Oui pour tout  [N] Non  [U] Non pour tout  [S] Suspendre  [?] Aide (la valeur par défaut est « O ») : O

X ComputerName Result     KB          Size Title
- ------------ ------     --          ---- -----
1 VIDANGE-W... Accepted               24MB Broadcom Inc. - Display - 9.17.8.9
COMMENTAIRES : Accepted [1] Updates ready to Download
2 VIDANGE-W... Downloaded             24MB Broadcom Inc. - Display - 9.17.8.9
COMMENTAIRES : Downloaded [1] Updates ready to Install

On peut ensuite observer que le statut de la mise à jour a changé et qu'elle indique maintenant "D" pour indiquer qu'elle est téléchargée.

PS C:\WINDOWS\system32> Get-WindowsUpdate -Verbose
COMMENTAIRES : VIDANGE-WINDOSE (2025-01-19 15:51:53): Connecting to Windows Update server. Please wait...
COMMENTAIRES : Found [1] Updates in pre search criteria
COMMENTAIRES : Found [1] Updates in post search criteria

ComputerName Status     KB          Size Title
------------ ------     --          ---- -----
VIDANGE-W... -D-----                24MB Broadcom Inc. - Display - 9.17.8.9

Il est maintenant possible de déclencher l'installation de la mise à jour avec le paramètre -Install

PS C:\WINDOWS\system32> Get-WindowsUpdate -Install -Verbose
COMMENTAIRES : VIDANGE-WINDOSE (2025-01-19 15:55:03): Connecting to Windows Update server. Please wait...
COMMENTAIRES : Found [1] Updates in pre search criteria
COMMENTAIRES : Found [1] Updates in post search criteria

Confirmer
Êtes-vous sûr de vouloir effectuer cette action ?
Opération « (2025-01-19 15:55:09) Broadcom Inc. - Display - 9.17.8.9[24MB] » en cours sur la cible « VIDANGE-WINDOSE ».
[O] Oui  [T] Oui pour tout  [N] Non  [U] Non pour tout  [S] Suspendre  [?] Aide (la valeur par défaut est « O ») : T

X ComputerName Result     KB          Size Title
- ------------ ------     --          ---- -----
1 VIDANGE-W... Accepted               24MB Broadcom Inc. - Display - 9.17.8.9
COMMENTAIRES : Accepted [1] Updates ready to Download
2 VIDANGE-W... Downloaded             24MB Broadcom Inc. - Display - 9.17.8.9
COMMENTAIRES : Downloaded [1] Updates ready to Install
3 VIDANGE-W... Installed              24MB Broadcom Inc. - Display - 9.17.8.9
COMMENTAIRES : Installed [1] Updates

Get-WUHistory

La commande Get-WUHistory permet de consulter l'historique des mises à jour Windows installées. Le paramètre -MaxDate permet d'établir une date limite à partir de laquelle les résultats affichés s'arrêteront.

PS C:\WINDOWS\system32> Get-WUHistory

ComputerName Operationname  Result     Date                Title
------------ -------------  ------     ----                -----
VIDANGE-W... Installation   Succeeded  2025-01-19 15:55:22 Broadcom Inc. - Display - 9.17.8.9
VIDANGE-W... Installation   Succeeded  2025-01-19 15:37:32 Mise à jour de la sélection disjointe pour Microsoft Defender ...
VIDANGE-W... Installation   Succeeded  2025-01-19 13:40:24 2025-01 Mise à jour cumulative pour Windows 11 Version 24H2 po...
VIDANGE-W... Installation   Succeeded  2025-01-19 13:24:43 2025-01 Mise à jour cumulative pour .NET Framework 3.5 pour et...
VIDANGE-W... Installation   Succeeded  2025-01-19 13:23:14 Outil de suppression de logiciels malveillants Windows x64 - v...
VIDANGE-W... Installation   Succeeded  2025-01-19 13:15:38 Mise à jour de la sélection disjointe pour Microsoft Defender ...
VIDANGE-W... Installation   Succeeded  2025-01-07 20:10:45 Mise à jour pour Microsoft Defender Antivirus plateforme anti-...
VIDANGE-W... Installation   Succeeded  2025-01-07 19:20:46 2024-12 Mise à jour cumulative pour Windows 11 Version 24H2 po...
VIDANGE-W... Installation   Succeeded  2025-01-07 18:58:18 2024-11 Mise à jour cumulative pour .NET Framework 3.5 pour et...
VIDANGE-W... Installation   Succeeded  2025-01-07 18:55:23 Mise à jour de la sélection disjointe pour Microsoft Defender ...
VIDANGE-W... Installation   Succeeded  2025-01-07 18:54:32 Outil de suppression de logiciels malveillants Windows x64 - v...
VIDANGE-W... Installation   Succeeded  2025-01-07 18:51:58 Mise à jour pour Windows Security platform - KB5007651 (versio...
VIDANGE-W... Installation   Succeeded  2025-01-07 18:32:59 Broadcom Inc. - System - 9.8.18.1
VIDANGE-W... Installation   Succeeded  2025-01-07 18:27:25 2024-11 Mise à jour pour Windows 11 Version 24H2 sur systèmes ...

Remove-WindowsUpdate

Vous avez effectué une mise à jour et quelque chose dans votre système a cassé? Pas de panique, vous pouvez désinstaller une mise à jour avec la commande "Remove-WindowsUpdate"!

Dans l'exemple suivant, nous désinstallerons une mise à jour pour la plateforme .NET 3.5 :

PS C:\WINDOWS\system32> Get-WindowsUpdate -IsInstalled

ComputerName Status     KB          Size Title
------------ ------     --          ---- -----
VIDANGE-W... -DI----    KB4052623    5MB Mise à jour pour la plateforme de logiciels anti-programme malveillant de W...
VIDANGE-W... -DI----    KB4052623   13MB Mise à jour pour Microsoft Defender Antivirus plateforme anti-programme mal...
VIDANGE-W... -DI----    KB5007651   38MB Mise à jour pour Windows Security platform - KB5007651 (version 10.0.27703....
VIDANGE-W... -DI----    KB890830    76MB Outil de suppression de logiciels malveillants Windows x64 - v5.131 (KB890830)
VIDANGE-W... -DI----    KB2267602    1GB Mise à jour de la sélection disjointe pour Microsoft Defender Antivirus – 2...
VIDANGE-W... -DI----    KB5049622  142MB 2025-01 Mise à jour cumulative pour .NET Framework 3.5 pour et 4.8.1 pour W...
VIDANGE-W... -DI----    KB5050009   86GB 2025-01 Mise à jour cumulative pour Windows 11 Version 24H2 pour les systèm...

PS C:\WINDOWS\system32> Remove-WindowsUpdate -KBArticleID KB5049622

Confirmer
Êtes-vous sûr de vouloir effectuer cette action ?
Opération « (2025-01-19 16:23:30) Remove (WUApi) Windows Update: 2025-01 Mise à jour cumulative pour .NET Framework 3.5
 pour et 4.8.1 pour Windows 11, version 24H2 pour les systèmes x64 (KB5049622) » en cours sur la cible
« VIDANGE-WINDOSE ».
[O] Oui  [T] Oui pour tout  [N] Non  [U] Non pour tout  [S] Suspendre  [?] Aide (la valeur par défaut est « O ») : O

Hide-WindowsUpdate

La commande Hide-WindowsUpdate permet de masquer certaines mises à jour pour éviter leur installation.

Dans l'exemple suivant, nous masquerons une mise à jour de Windows Defender :

PS C:\WINDOWS\system32> Hide-WindowsUpdate -KBArticleID KB2267602

Confirmer
Êtes-vous sûr de vouloir effectuer cette action ?
Opération « (2025-01-19 16:21:07) Hide Mise à jour de la sélection disjointe pour Microsoft Defender Antivirus –
2267602 Ko (version 1.421.1442.0) – Canal actuel (large)[1GB] » en cours sur la cible « VIDANGE-WINDOSE ».
[O] Oui  [T] Oui pour tout  [N] Non  [U] Non pour tout  [S] Suspendre  [?] Aide (la valeur par défaut est « O ») : T

ComputerName Status     KB          Size Title
------------ ------     --          ---- -----
VIDANGE-W... ---H--     KB2267602    1GB Mise à jour de la sélection disjointe pour Microsoft Defender Antivirus – 2...

Le statut "H" indique que la mise à jour est masquée et ne sera pas installée.


Winget

Winget est un module permettant l'installation automatisée d'applications disponibles dans le répertoire logiciel https://winget.run/. Il est à noter que la majorité des applications seront installées dans le %AppData% de l'utilisateur installant un logiciel. Ces logiciels sont donc unique à chaque utilisateur impliquant que si 20 utilisateurs du poste de travail désirent la même application, elle sera installée en 20 copies sur le poste. On réfère à ce type d'installation à "per-user" ou par utilisateur. La majorité des gestionnaires de logiciels du genre pour Windows fonctionnent de cette façon, l'avantage étant qu'un utilisateur n'a pas besoin de droits d'administrateur pour installer ces logiciels.

Cette méthode peut être une belle façon d'automatiser le déploiement logiciel sur un ordinateur personnel à un seul utilisateur puisqu'une simple tâche planifiée exécutant "winget update" et "winget upgrade --all" met à jour tous les logiciels pour l'utilisateur.

Il peut être installé en tant que module Powershell de la façon suivante (en tant qu'administrateur) :

PS C:\WINDOWS\system32> Install-Module Microsoft.WinGet.Client                                                          
Le fournisseur NuGet est requis pour continuer
PowerShellGet requiert le fournisseur NuGet, version 2.8.5.201 ou ultérieure, pour interagir avec les référentiels
NuGet. Le fournisseur NuGet doit être disponible dans « C:\Program Files\PackageManagement\ProviderAssemblies » ou «
C:\Users\Info\AppData\Local\PackageManagement\ProviderAssemblies ». Vous pouvez également installer le fournisseur
NuGet en exécutant la commande « Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force ». Voulez-vous
que PowerShellGet installe et importe le fournisseur NuGet maintenant ?
[O] Oui  [N] Non  [S] Suspendre  [?] Aide (la valeur par défaut est « O ») : O

Référentiel non approuvé
Vous installez les modules à partir d'un référentiel non approuvé. Si vous approuvez ce référentiel, modifiez sa valeur
 InstallationPolicy en exécutant l'applet de commande Set-PSRepository. Voulez-vous vraiment installer les modules à
partir de PSGallery ?
[O] Oui  [T] Oui pour tout  [N] Non  [U] Non pour tout  [S] Suspendre  [?] Aide (la valeur par défaut est « N ») : T
PS C:\WINDOWS\system32>

À sa première utilisation, vous devrez accepter les termes et conditions du module comme suit. La commande "update" au même titre que pour "apt" sous Ubuntu et Debian vérifie les mises à jour disponibles et la commande "upgrade --all" permet d'appliquer les mises à jour disponibles. Certaines mises à jour seront silencieuses en arrière plan et d'autres afficheront une fenêtre de progression mais tout sera toujours automatisé.

PS C:\WINDOWS\system32> winget update
The `msstore` source requires that you view the following agreements before using.
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
The source requires the current machine's 2-letter geographic region to be sent to the backend service to function properly (ex. "US").

Do you agree to all the source agreements terms?
[Y] Yes  [N] No: Y
Name                                        Id                           Version             Available           Source
-----------------------------------------------------------------------------------------------------------------------
Microsoft Visual C++ 2015-2022 Redistribut… Microsoft.VCRedist.2015+.x86 14.36.32532.0       14.42.34433.0       winget
Microsoft Visual C++ 2015-2022 Redistribut… Microsoft.VCRedist.2015+.x64 14.36.32532.0       14.42.34433.0       winget
Microsoft OneDrive                          Microsoft.OneDrive           24.226.1110.0004    24.244.1204.0003    winget
Microsoft Teams                             Microsoft.Teams              24295.605.3225.8804 24335.208.3315.1951 winget
App Installer                               Microsoft.AppInstaller       1.24.25199.0        1.24.25200.0        winget
Power Automate                              Microsoft.DevHome            0.0.0.0             0.1901.687.0        winget
6 upgrades available.
PS C:\WINDOWS\system32> winget upgrade --all
Name                                        Id                           Version             Available           Source
-----------------------------------------------------------------------------------------------------------------------
Microsoft Visual C++ 2015-2022 Redistribut… Microsoft.VCRedist.2015+.x86 14.36.32532.0       14.42.34433.0       winget
Microsoft Visual C++ 2015-2022 Redistribut… Microsoft.VCRedist.2015+.x64 14.36.32532.0       14.42.34433.0       winget
Microsoft OneDrive                          Microsoft.OneDrive           24.226.1110.0004    24.244.1204.0003    winget
Microsoft Teams                             Microsoft.Teams              24295.605.3225.8804 24335.208.3315.1951 winget
App Installer                               Microsoft.AppInstaller       1.24.25199.0        1.24.25200.0        winget
Power Automate                              Microsoft.DevHome            0.0.0.0             0.1901.687.0        winget
6 upgrades available.

Installing dependencies:
This package requires the following dependencies:
  - Packages
      Microsoft.VCLibs.Desktop.14 [>= 14.0.33728.0]
      Microsoft.UI.Xaml.2.8 [>= 8.2310.30001.0]
      Microsoft.WindowsAppRuntime.1.5
(1/6) Found Microsoft Visual C++ 2015-2022 Redistributable (x86) [Microsoft.VCRedist.2015+.x86] Version 14.42.34433.0
Starting package install...
Successfully installed

#[...plein de barres de chargement]

La commande "winget --help" vous aidera à trouver les arguments nécessaires à l'utilisation du module :

PS C:\WINDOWS\system32> winget --help
Gestionnaire de package Windows v1.9.25200
Copyright (c) Microsoft Corporation. Tous droits réservés.

L’utilitaire de ligne de commande winget permet d’installer des applications et d’autres packages à partir de la ligne de commande.

Utilisation : winget  [<commande>] [<options>]

Les commandes suivantes sont disponibles :
  install    Installe le package donné
  show       Affiche des informations sur un package
  source     Gérer les sources des packages
  search     Rechercher et afficher des informations de base sur les packages
  list       Afficher les packages installés
  upgrade    Affiche et effectue les mises à niveau disponibles.
  uninstall  Désinstallation du paquet donné
  hash       Assistant pour le hachage des fichiers d’installation
  validate   Valide un fichier manifeste
  settings   Ouvrir les paramètres ou définir les paramètres d’administrateur
  features   Affiche le statut des fonctionnalités expérimentales
  export     Exporte une liste des packages installés
  import     Installe tous les packages dans un fichier
  pin        Gérer les broches de package
  configure  Configure le système dans un état souhaité
  download   Télécharge le programme d’installation à partir d’un package donné
  repair     Répare le package sélectionné

La commande "winget search [application]" vous permettrait de vérifier si une application est disponible sur leur répertoire. Dans l'exemple suivant, 

PS C:\WINDOWS\system32> winget search VSCode
Nom                                ID                                  Version      Correspondance               Source
-----------------------------------------------------------------------------------------------------------------------
Microsoft Visual Studio Code       Microsoft.VisualStudioCode          1.96.4       Moniker: vscode              winget
Codium                             Alex313031.Codium                   1.89.1.24132 Tag: vscode                  winget
TheiaBlueprint                     EclipseFoundation.TheiaBlueprint    1.44.0       Tag: vscode                  winget
TheiaIDE                           EclipseFoundation.TheiaIDE          1.54.0       Tag: vscode                  winget
Huawei QuickApp IDE                Huawei.QuickAppIde                  14.0.1       Tag: vscode                  winget
DevPod                             LoftLabs.DevPod                     0.6.9        Tag: vscode                  winget
VSCodium                           VSCodium.VSCodium                   1.96.4.25017 Tag: vscode                  winget
VSCodium Insiders                  VSCodium.VSCodium.Insiders          1.97.0.24352 Tag: vscode                  winget
vscli                              michidk.vscli                       1.1.0        Tag: vscode                  winget
Upgit                              pluveto.Upgit                       0.2.18       Tag: vscode                  winget
MrCode                             zokugun.MrCode                      1.82.0.23253 Tag: vscode                  winget
Microsoft Visual Studio Code CLI   Microsoft.VisualStudioCode.CLI      1.96.4       Moniker: vscode-cli          winget
Microsoft Visual Studio Code Insi… Microsoft.VisualStudioCode.Insiders 1.97.0       Moniker: vscode-insiders     winget
Microsoft Visual Studio Code Insi… Microsoft.VisualStudioCode.Insider… 1.97.0       Moniker: vscode-insiders-cli winget
markdown-oxide                     FelixZeller.markdown-oxide          0.23.1       Tag: vscode-language-support winget

Connaissant maintenant l'ID de l'application recherchée, nous pouvons maintenant l'installer!

PS C:\WINDOWS\system32> winget install Microsoft.VisualStudioCode
Trouvé Microsoft Visual Studio Code [Microsoft.VisualStudioCode] Version 1.96.4
La licence d’utilisation de cette application vous est octroyée par son propriétaire.
Microsoft n’est pas responsable des paquets tiers et n’accorde pas de licences à ceux-ci.
Téléchargement en cours https://vscode.download.prss.microsoft.com/dbazure/download/stable/cd4ee3b1c348a13bafd8f9ad8060705f6d4b9cba/VSCodeUserSetup-x64-1.96.4.exe
  ██████████████████████████████   100 MB /  100 MB
Le code de hachage de l’installation a été vérifié avec succès
Démarrage du package d’installation... Merci de patienter.
Installé correctement

# Redémarrage du shell pour recharger les variables d'environnement
PS C:\Users\Info> (Get-Command code).path
C:\Users\Info\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd

image.png

La commande "winget list" permet de voir l'ensemble des logiciels et indiquera lesquelles ont été installées et sont gérées par winget.

PS C:\Users\Info> winget list
Nom                                           ID                                            Version             Source
-----------------------------------------------------------------------------------------------------------------------
VMware Tools                                  ARP\Machine\X64\{6070BE95-B84D-40FE-8ABD-C70… 12.4.5.23787635
Microsoft Edge                                Microsoft.Edge                                132.0.2957.115      winget
Microsoft Visual C++ 2015-2022 Redistributab… Microsoft.VCRedist.2015+.x64                  14.42.34433.0       winget
Microsoft Visual C++ 2015-2022 Redistributab… Microsoft.VCRedist.2015+.x86                  14.42.34433.0       winget
Microsoft OneDrive                            Microsoft.OneDrive                            24.244.1204.0003    winget
Microsoft Visual Studio Code (User)           Microsoft.VisualStudioCode                    1.96.4              winget
Microsoft Clipchamp                           MSIX\Clipchamp.Clipchamp_3.1.11920.0_neutral… 3.1.11920.0
Microsoft Teams                               Microsoft.Teams                               24335.208.3315.1951 winget
AV1 Video Extension                           MSIX\Microsoft.AV1VideoExtension_1.3.4.0_x64… 1.3.4.0
AVC Encoder Video Extension                   MSIX\Microsoft.AVCEncoderVideoExtension_1.1.… 1.1.3.0
Améliorations de la compatibilité des applic… MSIX\Microsoft.ApplicationCompatibilityEnhan… 1.2411.16.0
Actualités                                    MSIX\Microsoft.BingNews_4.55.62231.0_x64__8w… 4.55.62231.0
Recherche Web de Microsoft Bing               MSIX\Microsoft.BingSearch_1.1.3.0_x64__8weky… 1.1.3.0
MSN Météo                                     MSIX\Microsoft.BingWeather_4.54.63007.0_x64_… 4.54.63007.0
Copilot                                       MSIX\Microsoft.Copilot_1.24122.48.0_x64__8we… 1.24122.48.0
Installeur d'applications                     Microsoft.AppInstaller                        1.24.25200.0        winget