# 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/](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](https://cours.alexarsenault.cf/uploads/images/gallery/2025-01/scaled-1680-/image.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-01/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
```

# Tâches planifiées

[Référence officiel de Microsoft](https://learn.microsoft.com/en-us/powershell/module/scheduledtasks)

### Importation

La gestion des tâches planifiées n'est pas directement incluse dans Powershell mais le module permettant leur manipulation est préinstallé dans Windows et il suffit del 'importer à l'aide de la commande suivante pour l'utiliser :

```
PS C:\Users\Info> Import-Module ScheduledTasks
PS C:\Users\Info>
```

### Récupération d'information sur les tâches planifiées

#### Get-ScheduledTask

La commande "Get-ScheduledTask" permet de lister l'ensemble des tâches planifiées du système. Ces tâches sont l'équivalent de "cron" sous Linux.

```
PS C:\Users\Info> Get-ScheduledTask

TaskPath                                       TaskName                          State
--------                                       --------                          -----
\                                              OneDrive Reporting Task-S-1-5-... Ready
\                                              OneDrive Standalone Update Tas... Ready
\Microsoft\Windows\.NET Framework\             .NET Framework NGEN v4.0.30319    Ready
\Microsoft\Windows\.NET Framework\             .NET Framework NGEN v4.0.30319 64 Ready
\Microsoft\Windows\.NET Framework\             .NET Framework NGEN v4.0.30319... Disabled
\Microsoft\Windows\.NET Framework\             .NET Framework NGEN v4.0.30319... Disabled
\Microsoft\Windows\Active Directory Rights ... AD RMS Rights Policy Template ... Disabled
```

Les tâches planifiées sous Windows sont structurées par "dossier". Le dossier Microsoft comprend une panoplie de tâches exécutées par défaut sous Windows. Certaines sont de la télémétrie (envoyer des données de diagnostic à Microsoft), d'autres sont pour la maintenance des ordinateurs (ex. Windows Update, synchronisation d'horloge, GPUpdate, etc.). Il est généralement sage de créer nos propres tâches à l'extérieur de ce répertoire.

Les options .Actions et .Triggers de l'objet retourné afficheront la tâche et les déclencheurs de la tâche.

```
PS C:\Users\Info> (Get-ScheduledTask -TaskName QueueReporting).Actions


Id               :
Arguments        : -upload
Execute          : %windir%\system32\wermgr.exe
WorkingDirectory :
PSComputerName   :



PS C:\Users\Info> (Get-ScheduledTask -TaskName QueueReporting).Triggers

Enabled            : True
EndBoundary        :
ExecutionTimeLimit :
Id                 : QueueReportingTimeTrigger
Repetition         : MSFT_TaskRepetitionPattern
StartBoundary      : 2014-12-31T19:00:00-05:00
RandomDelay        : PT1H
PSComputerName     :
```

#### Get-ScheduledTaskInfo

La commande "Get-ScheduledTaskInfo" nous permet de consulter la dernière date d'exécution ainsi que la suivante et le résultat de la dernière exécution.

```
PS C:\Users\Info> Get-ScheduledTask -TaskName QueueReporting | Get-ScheduledTaskInfo


LastRunTime        : 2025-01-20 23:33:45
LastTaskResult     : 0
NextRunTime        : 2025-01-21 03:23:38
NumberOfMissedRuns : 0
TaskName           : QueueReporting
TaskPath           : \Microsoft\Windows\Windows Error Reporting\
PSComputerName     :
```






##### Registry

```
#Taskbar
$registryPath = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 	
$registryValueName = "TaskbarAl"
$registryValueData = 0
Set-ItemProperty -Path $registryPath -Name $registryValueName -Value $registryValueData

#Widgets
$registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Dsh" 	
$registryValueName = "AllowNewsAndInterests"
$registryValueData = 0
try {
    Get-Item -Path $registryPath -ErrorAction Stop
}
catch {
    New-Item -Path $registryPath -Force
}
Set-ItemProperty -Path $registryPath -Name $registryValueName -Value $registryValueData
#Restart-Computer

#Classic right click
$registryPath = "HKCU:\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32"
$registryValueName = "(Default)"
$registryValueData = ""
try {
    Get-Item -Path $registryPath -ErrorAction Stop
}
catch {
    New-Item -Path $registryPath -Force
}
Set-Item -Path $registryPath -Value $registryValueData
Restart-Computer





$hacks = @()

#Widgets
$tweak = [PSCustomObject]@{
  $registryPath = "HKCU:\SOFTWARE\Microsoft\PolicyManager\default\NewsAndInterests"
  $registryValueName = "AllowNewsAndInterests"
  $registryValueData = "0"
}
$hacks += $tweak
$tweak = [PSCustomObject]@{
  $registryPath = "HKCU:\SOFTWARE\Policies\Microsoft"
  $registryValueName = "Dsh"
  $registryValueData = "0"
}
$hacks += $tweak

For ($i in $hacks) {
  Set-ItemProperty -Path $i.registryPath -Name $i.registryValueName -Value $registryValueData
}
```

##### CleanMgr

cleanmgr /sageset:\[n\] \[configure set\]  
cleanmgr /sagerun:\[n\] \[run set\]

cleanmgr /autoclean \[old windows updates\]

##### Task Scheduler

##### Winget

#####   


##### Remove features?

##### PSWindowsUpdate

##### Robocopy?

[![image.png](https://cours.alexarsenault.cf/uploads/images/gallery/2025-01/scaled-1680-/ad9image.png)](https://cours.alexarsenault.cf/uploads/images/gallery/2025-01/ad9image.png)

##### Scripting Install?

FireFox  
7-Zip

# DHCP



# DNS



# Active Directory