# Commandes PowerShell : présentation rapide des 40 commandes principales

En faisant appel aux bonnes commandes PowerShell, vous pouvez cibler l’utilisation de certains modules. Les différentes cmdlets sont structurées de façon logique. Vous avez également la possibilité de les compléter à l’aide de paramètres supplémentaires. Découvrez avec nous les 40 PowerShell commands les plus importantes pour optimiser le travail au sein de votre système ou réseau.

## PowerShell commands : de quoi s’agit-il ?

PowerShell, la suite logicielle préinstallée depuis la version Windows 7, vous permet de saisir des commandes PowerShell qui sont ensuite exécutées par Windows. En plus des commandes cmd de la ligne de commande, nombreuses sont les autres commandes (ou cmdlets) que seule la suite PowerShell est en mesure de comprendre. Ces cmdlets **sont composées d’un verbe et d’un substantif**, les deux éléments étant séparés par un tiret. De plus, des **paramètres facultatifs** peuvent vous permettre de spécifier les PowerShell commands. Une espace sépare chacun de ces paramètres. Il y a bien longtemps que la suite PowerShell n’est plus seulement utilisée par les administrateurs, car elle rend également de précieux services aux développeurs. Il existe des centaines de commandes PowerShell déjà installées par défaut. Découvrez avec nous les plus importantes d’entre elles.

## Les principales commandes PowerShell

Les commandes PowerShell permettent de réaliser des tâches administratives parfois très larges, le tout grâce à quelques saisies seulement. Les commandes de base exposées ci-dessous comptent parmi celles dont vous aurez sûrement le plus souvent besoin. Elles donnent un premier aperçu de la structure générale d’un réseau, répertorient d’autres PowerShell commands, permettent de créer les configurations de sécurité nécessaires ou encore d’effectuer des analyses utiles. Les principales commandes PowerShell sont notamment les suivantes :

### 1. Get-Module -All

Vous souhaitez obtenir un premier aperçu de l’ensemble des modules PowerShell importés ? Pour ce faire, il vous suffit d’utiliser la commande **Get-Module -All**.

```shell
Get-Module -All
```

### 2. Get-Command

Il existe plusieurs commandes PowerShell prédéfinies. Pour obtenir un aperçu des PowerShell commands dont vous disposez à un moment donné, vous pouvez faire appel à la commande **Get-Command**. Celle-ci répertorie de façon claire toutes les actions que vous pouvez effectuer, avec une explication rapide concernant la cmdlet correspondante. Cette commande peut également s’appliquer à vos modules supplémentaires, si vous en avez installé.

```shell
Get-Command
```

### 3. Get-Help

La liste obtenue à partir de la commande Get-Command (voir ci-dessus) vous donne un premier aperçu, mais dans le cas où vous auriez besoin de plus amples informations sur une commande et sur les possibilités qu’elle offre, n’hésitez pas à faire appel à la cmdlet **Get-Help**. Cette commande vous permet d’accéder aux fichiers d’aide présents sur votre ordinateur ; elle vous renvoie alors l’ensemble des informations disponibles. Pour profiter de cette solution, il vous suffit de combiner la commande Get-Help avec la commande dont la syntaxe vous intéresse.

```shell
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
```

### 4. Get-Process

Dans de nombreux cas, il peut s’avérer utile d’obtenir un aperçu de l’ensemble des applications, programmes et processus actifs exécutés à un moment donné sur votre système, et ce, aussi rapidement que possible. La commande **Get-Process** vous permet d’obtenir cette vue d’ensemble. Il vous suffit de l’associer à une application particulière pour recevoir des informations supplémentaires à son sujet.

```shell
Get-Process
```

### 5. Get-Service

Le fonctionnement de la commande **Get-Service** est similaire à celui de la cmdlet Get-Process, à une différence près : la commande Get-Service renvoie des informations sur tous les services actifs. Pour obtenir des informations sur un service en particulier, ou sur un type spécifique parmi différents services différents, contentez-vous de préciser votre demande.

```shell
Get-Service
```

### 6. Stop-Process

Plusieurs commandes PowerShell vous permettent également d’interrompre des processus en passant par le shell ; la commande **Stop-Process** fait partie des possibilités qui s’offrent à vous. Pour définir le processus correspondant, vous pouvez utiliser son nom, son ID ou d’autres attributs le concernant. Vous trouverez un exemple ci-dessous :

```shell
Stop-Process -Name "nomduprocessus"
```

```shell
Stop-Process -Id 3582 -Confirm -PassThru
```

L’extrait de code « -Confirm » sert à demander une confirmation de la commande. « -PassThru », quant à lui, permet de demander une confirmation de l’interruption du processus. Attention : cette commande n’est pas automatique.

### 7. ConvertTo-HTML

Pour identifier aussi vite que possible tout problème ou toute complication éventuelle, il peut s’avérer très utile de bénéficier d’une représentation claire. La commande **ConvertTo-HTML** vous permet de transférer le résultat des PowerShell commands qui vous intéressent dans un fichier HTML. Toutes les informations sont ainsi affichées sous forme de colonnes, pour une meilleure lisibilité. Vous trouverez ci-dessous un exemple de ce à quoi la commande peut ressembler :

```shell
Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
```

### 8. ConvertTo-Xml

Une commande similaire existe également si vous avez besoin d’une représentation basée sur XML pour un objet en particulier. Pour ce faire, il vous suffit d’utiliser la commande **ConvertTo-Xml**. Dans l’exemple suivant, la date est ainsi convertie au format XML :

```shell
Get-Date | ConvertTo-Xml
```

### 9. Where-Object

La commande **Where-Object** permet de filtrer le résultat d’une cmdlet. Lorsque vous exécutez une commande, il n’est pas rare d’obtenir plusieurs objets qui ne vous sont toutefois pas utiles dans leur totalité. La commande Where-Object communique le résultat par l’intermédiaire d’un pipe, et vous transmet ainsi uniquement les informations recherchées. Par exemple, si vous souhaitez seulement consulter les services créés ou mis à jour au cours de cette année, vous pouvez procéder comme suit :

```shell
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
```

### 10. Get-History

Vous cherchez à lister l’ensemble des commandes PowerShell saisies pendant une session ? Alors la commande **Get-History** est la cmdlet qu’il vous faut. Suivez l’exemple ci-dessous pour répertorier l’ensemble des PowerShell commands concernées :

```shell
Get-History
```

Cette spécification vous permet de récupérer uniquement les dix dernières commandes PowerShell :

```shell
Get-History -Count 10
```

### 11. Clear-History

Bien entendu, vous avez aussi la possibilité d’effacer la liste des PowerShell commands utilisées. Pour supprimer l’ensemble de ces saisies, utilisez simplement la cmdlet **Clear-History** :

```shell
Clear-History
```

Vous souhaitez uniquement supprimer certaines commandes PowerShell ? Il vous suffit pour cela d’ajouter les paramètres correspondants. Le code ci-dessous permet, par exemple, de supprimer toutes les PowerShell commands contenant le terme « Help » ou se terminant par « Syntax ».

```shell
Clear-History -Command *Help*, *Syntax
```

### 12. Add-History

De la même manière, il est possible d’ajouter des commandes PowerShell à une session. De cette façon, elles pourront être appelées directement une prochaine fois. Il convient d’utiliser la cmdlet **Add-History** à cet effet.

```shell
Add-History
```

### 13. Out-File

Pour enregistrer le résultat de vos commandes PowerShell sur votre ordinateur, faites appel à la cmdlet **Out-File** ; celle-ci dépose alors les PowerShell commands dans un fichier texte brut, en suivant le chemin indiqué par vos soins.

```shell
Get-Process | Out-File -FilePath .\Process.txt
```

### 14. Copy-Item

La suite PowerShell vous donne aussi la possibilité de copier des éléments, puis de stocker cette copie à un autre emplacement. Pour ce faire, utilisez la commande **Copy-Item** ; n’oubliez pas de préciser le répertoire dans lequel il convient d’enregistrer ladite copie. Le fonctionnement de cette commande est le suivant :

```shell
Copy-Item "C:\Ordner1\Datei.txt" -Destination "C:\Ordner2"
```

### 15. Get-ChildItem

La commande **Get-ChildItem** permet de récupérer des éléments stockés sur un ou plusieurs emplacements. Si des éléments dits « enfants » sont présents, ceux-ci sont également affichés. Cette commande indique par défaut les attributs de ces éléments, la date et l’heure de leur dernière modification, la taille du fichier ainsi que leur nom. Si l’emplacement est vide, aucun résultat n’est alors renvoyé.

```shell
Get-ChildItem -Path C:\Example
```

Les attributs sont indiqués sous la ligne « Mode ». Vous trouverez ci-dessous une liste des attributs parmi les plus courants :

- a (archive) ;
- d (répertoire) ;
- h (élément masqué) ;
- l (lien) ;
- r (élément en lecture seule) ;
- s (système).

### 16. Set-AuthenticodeSignature

Vous cherchez à protéger vos fichiers ? Vous pouvez leur attribuer une signature Authenticode en utilisant la commande **Set-AuthenticodeSignature**. Attention néanmoins : cette commande fonctionne uniquement avec les fichiers prenant en charge le Subject Interface Package (ou SIP).

```shell
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
```

### 17. Invoke-Item

La commande **Invoke-Item** constitue la solution la plus simple pour exécuter l’action standard d’un fichier particulier. Cette commande permet par exemple de faire en sorte qu’un fichier exécutable soit exécuté directement, ou encore qu’un fichier de document soit bien ouvert dans l’application associée. Dans l’exemple ci-dessous, le fichier est appelé par défaut dans Microsoft Word :

```shell
Invoke-Item "C:\Test\Example.doc"
```

### 18. Start-Job

Vous souhaitez déclencher une tâche d’arrière-plan sur votre ordinateur local ? Il existe justement une commande conçue pour cela. En effet, la commande **Start-Job** vous permet d’exécuter une commande spécifique en arrière-plan, sans aucune interaction avec la session en cours.

```shell
Start-Job -ScriptBlock { Get-Process -Name pwsh }
```

## Effectuer des actions en utilisant des PowerShell commands

Si les commandes PowerShell présentées ci-dessus vous permettaient surtout de profiter d’une vue d’ensemble, il est également possible d’effectuer de nombreuses actions en utilisant les bonnes cmdlets, et donc d’utiliser votre système de façon productive. Découvrez les PowerShell commands suivantes, qui peuvent grandement vous faciliter la tâche.

### 19. Clear-Content

Pour effacer le contenu d’un élément tout en vous assurant que l’élément lui-même reste intact, il convient de faire appel à la commande **Clear-Content**. Vous pourriez par exemple supprimer le texte d’un document, tout en laissant intact le fichier proprement dit. Vous trouverez ci-dessous un exemple en lien avec cette commande :

```shell
Clear-Content C:\Temp\Example.txt
```

### 20. ForEach-Object

La commande **ForEach-Object** permet d’effectuer une opération sur l’ensemble des éléments d’une liste d’objets d’entrée. Dans l’exemple ci-dessous, nous avons choisi de diviser trois nombres entiers par dix dans un tableau :

```shell
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
```

### 21. Compare-Object

Vous pouvez utiliser la cmdlet **Compare-Object** pour éviter d’avoir à comparer manuellement différents ensembles d’objets. Cette commande se charge alors de générer un rapport qui pointe du doigt les différences entre les ensembles en question. Le premier ensemble est utilisé comme un objet de référence, tandis que le deuxième ensemble fait office d’objet de différence. C’est à vous de déterminer les facteurs que vous souhaitez comparer. Si vous choisissez d’ignorer cette étape, seuls les résultats des chaînes de caractères seront alors comparés entre eux. Le résultat établit une différence entre les propriétés qui apparaissent uniquement dans l’objet de référence (« &lt;== ») et celles qui apparaissent uniquement dans l’objet de différence (« ==&gt; »). Dans l’exemple ci-dessous, « Document1.txt » contient les valeurs « Berlin », « Londres » et « Paris », contre « Berlin », « Vienne » et « Amsterdam » pour « Document2.txt ».

```shell
Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Document1.txt) -DifferenceObject (Get-Content -Path C:\Test\Document2.txt)
InputObject	SideIndicator
---------------	-----------------
Vienne		==>
Amsterdam	==>
Londres		<==
Paris		<==
```

Les éléments qui apparaissent dans les deux documents (ici, il s’agit donc de « Berlin ») ne sont, par défaut, pas affichés.

### 22. New-Object

La commande **New-Object** compte également parmi les commandes PowerShell particulièrement utiles. Cette cmdlet vous permet en effet de créer une instance pour un framework .NET ou un Component Object Model (COM). Ainsi, si vous souhaitez créer un objet System.Version avec la chaîne de caractères « 1.2.3.4 » pour le constructeur, la commande se présente alors comme suit :

```shell
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
```

### 23. Select-Object

Avec la commande **Select-Object**, sélectionnez un objet (ou un groupe d’objets) disposant des propriétés que vous avez spécifiées. Pour ce faire, vous pouvez définir les paramètres suivants :

- First (premier) ;
- Last (dernier) ;
- Unique (unique) ;
- Skip (ignoré) ;
- Index (index).

L’exemple suivant tire profit des PowerShell commands Get-Process et Sort-Object pour afficher les trois processus qui utilisent le plus de mémoire au moment exact de la saisie.

```shell
Get-Process | Sort-Object -Property WS | Select-Object -Last 3
```

### 24. Set-Alias

Les raccourcis Windows constituent une bonne solution si vous souhaitez exécuter des actions encore plus rapidement. En principe, la suite PowerShell propose elle aussi cette option. Le système vous permet en effet de mettre en place un raccourci pour différentes commandes PowerShell à l’aide de la cmdlet **Set-Alias**. Dans l’exemple ci-dessous, nous avons décidé de créer, dans le cadre d’une session, l’alias « ci » (servant de raccourci pour la commande Get-ChildItem).

```shell
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
```

### 25. Set-Location

Pour changer l’emplacement de votre mémoire de travail, vous pouvez utiliser la commande **Set-Location**. Vous pouvez faire votre choix parmi les emplacements disponibles, notamment des répertoires, des sous-répertoires, des emplacements d’enregistrement ou encore des chemins des fournisseurs. Dans l’exemple ci-dessous, nous avons choisi le lecteur C: en tant qu’emplacement :

```shell
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
```

### 26. Set-Service

La cmdlet **Set-Service** vous permet d’interagir avec un service, c’est-à-dire de le lancer, de l’arrêter ou encore de le suspendre. Elle vous donne également la possibilité de modifier les propriétés de ce service. Dans l’exemple suivant, nous avons décidé de modifier le nom d’affichage d’un service, qui passe donc de « Nouveau poste de travail » à « Ancien poste de travail ».

```shell
Set-Service -Name "Nouveau poste de travail" -DisplayName "Ancien poste de travail"
```

### 27. Set-TimeZone

Pour modifier le fuseau horaire de votre système, la commande **Set-TimeZone** est la solution qu’il vous faut. Vous pouvez notamment vous en servir pour établir le temps universel coordonné en tant que nouvelle heure du système :

```shell
Set-TimeZone -Id "UTC"
```

### 28. Restart-Computer

Vous pouvez choisir de redémarrer le système d’exploitation, que ce soit sur votre ordinateur local ou sur un ordinateur distant. La commande PowerShell correspondante se nomme « **Restart-Computer** ». Vous pouvez voir ci-dessous comment elle se présente.

Pour votre ordinateur local :

```shell
Restart-Computer
```

Pour certains autres ordinateurs sur votre réseau :

```shell
Restart-Computer -ComputerName Server01, Server03
```

### 29. Restart-Service

Si vous cherchez à arrêter et à redémarrer un service en passant par des commandes PowerShell, la cmdlet **Restart-Service** est tout à fait celle qu’il vous faut. Ainsi, vous pouvez par exemple choisir de redémarrer tous les services dont le nom commence par « Net » :

```shell
PS C:\> Restart-Service -DisplayName "net*"
```

### 30. Clear-RecycleBin

N’oubliez pas votre corbeille, qui doit être vidée régulièrement. D’ailleurs, n’hésitez pas à vous servir de la suite PowerShell pour effectuer cette action. Pour ce faire, il vous suffit de faire appel à la commande **Clear-RecycleBin**.

```shell
Clear-RecycleBin
```

### 31. Get-ComputerInfo

La commande **Get-ComputerInfo** sert à récupérer les propriétés du système et celles du système d’exploitation.

```shell
Get-ComputerInfo
```

### 32. Move-Item

Différentes commandes PowerShell sont disponibles si vous cherchez à déplacer un élément d’un emplacement vers un autre. La commande **Move-Item** reste toutefois la solution la plus couramment utilisée. Dans l’exemple ci-dessous, le fichier « ancien.txt » est déplacé depuis le lecteur C: vers le répertoire D:\\Temp, avant d’être renommé en « nouveau.txt ».

```shell
Move-Item -Path C:\ancien.txt -Destination D:\Temp\nouveau.txt
```

## Surveillance et débogage avec les commandes PowerShell appropriées

Les PowerShell commands qui vous permettent d’assurer la surveillance de votre système et de procéder à des vérifications peuvent également s’avérer particulièrement utiles, tout particulièrement lorsque vous cherchez à tester un nouveau réseau et ses performances en conditions réelles. Pour ce faire, n’hésitez pas à faire appel aux commandes PowerShell présentées ci-dessous.

### 33. Debug-Process

Le débogage est un processus essentiel si vous tenez à vous assurer du bon fonctionnement de l’ensemble de vos paramètres et processus. Pour vous y adonner, commencez par télécharger et configurer les débogueurs appropriés. Une fois cette étape effectuée, appliquez les débogueurs à l’aide de la commande **Debug-Process**. L’exemple suivant met en scène un débogueur pour notre explorateur :

```shell
PS C:\> Debug-Process -Name "Explorer"
```

Pour déboguer plusieurs processus en même temps, vous n’avez qu’à les séparer les uns des autres à l’aide de virgules.

### 34. Enable-PSBreakpoint

Pour activer certains points d’arrêt (également appelés *breakpoints*), servez-vous de la commande **Enable-PSBreakpoint**. Sur le plan technique, celle-ci définit la valeur de la cmdlet sur « *true* » (vraie). Cette commande PowerShell vous permet d’activer l’ensemble des points d’arrêt de votre session :

```shell
Get-PSBreakpoint | Enable-PSBreakpoint
```

Pour activer les points d’arrêt à l’aide de leur ID, privilégiez plutôt cette commande :

```shell
Enable-PSBreakpoint -ID 0, 3, 4
```

### 35. Disable-PSBreakpoint

Vous souhaitez désactiver des points d’arrêt PowerShell ? Il existe également une solution pour cela : la cmdlet **Disable-PSBreakpoint**. Sur le plan technique, la valeur de la commande Enable-PSBreakpoint est définie sur « false » (fausse). Pour désactiver un point d’arrêt avec l’ID « 0 », référez-vous à l’exemple ci-dessous :

```shell
Disable-PSBreakpoint -Id 0
```

### 36. Get-Counter

Si vous travaillez sur des appareils Windows, vous pouvez utiliser la suite PowerShell pour accéder à leurs données de performance. Pour ce faire, faites appel à la commande **Get-Counter**. N’hésitez pas à utiliser cette commande pour votre ordinateur local comme pour des ordinateurs distants. Dans l’exemple ci-dessous, nous avons choisi de récupérer les données de l’ordinateur local :

```shell
Get-Counter -ListSet *
```

### 37. Start-Sleep

En cas de surcharge du système, il peut s’avérer crucial d’avoir la possibilité de mettre en pause un script ou une session. La suite PowerShell vous propose d’utiliser la commande **Start-Sleep** à cet effet ; il vous suffit en effet d’indiquer la période pendant laquelle vous souhaitez suspendre telle ou telle activité. Dans l’exemple ci-dessous, l’exécution est interrompue pendant deux secondes :

```shell
Start-Sleep -Seconds 2
```

### 38. Test-Path

La commande **Test-Path** vous permet de vérifier si tous les éléments d’un chemin donné sont bien présents. Elle peut renvoyer deux résultats : « True » (vrai) ou « False » (faux).

```shell
Test-Path -Path "C:\Documents\Utilisateur"
False
```

### 39. Test-Connection

Vous avez aussi la possibilité de tester les connexions au sein de votre réseau en utilisant la suite PowerShell. Par l’intermédiaire de la commande **Test-Connection**, celle-ci envoie un paquet de demande d’écho ICMP à des destinataires définis, puis demande une réponse passant par ce protocole de message de contrôle Internet. Dans l’exemple ci-dessous, nous envoyons une demande au serveur appelé « Server02 » en passant par le protocole IPv6.

```shell
Test-Connection -TargetName Server02 -IPv6
```

### 40. Get-WinEvent

Différentes commandes PowerShell sont disponibles si vous souhaitez consulter un ou plusieurs journaux d’événements. La cmdlet **Get-WinEvent** est sans doute la plus pratique de toutes. Pour accéder à l’ensemble des journaux de votre ordinateur local, utilisez la commande suivante :

```shell
Get-WinEvent -ListLog *
```


This is a markdown version of: [https://www.ionos.com/fr-be/digitalguide/serveur/configuration/commandes-powershell/](https://www.ionos.com/fr-be/digitalguide/serveur/configuration/commandes-powershell/) for AI/LLM consumption.