Gajus - Fotolia

Administration : Les commandes PowerShell à connaître absolument

Cet article liste des cmdlets PowerShell les plus utiles et la manière de s’en servir.

PowerShell contient des milliers de cmdlets dont l’utilité varie en fonction de votre cas d’utilisation. Bien que de nombreuses cmdlets PowerShell puissent être considérées comme obscures, vous vous retrouverez probablement à utiliser certaines d’entre elles de manière répétée. C’est particulièrement vrai pour ceux qui créent des scripts PowerShell ou qui utilisent PowerShell pour diverses tâches d’automatisation.

Il est utile de commencer par une liste de base des cmdlets que vous prévoyez d’utiliser au quotidien. Voici douze des cmdlets PowerShell les plus utilisées par les administrateurs. Elles sont disponibles dans Windows PowerShell 5.1 et PowerShell 7. Les différences entre les versions sont mises en évidence.

1/ Get-Command

La cmdlet Get-Command permet de découvrir des commandes. En utilisant divers paramètres, Get-Command peut dresser la liste de toutes les commandes actuellement disponibles, des commandes d’un module spécifique ou même des commandes correspondant à un filtre. Comme PowerShell contient des milliers de cmdlets, la cmdlet Get-Command est particulièrement utile.

L’exécution de Get-Command sans paramètres génère une longue liste de toutes les commandes disponibles dans votre session. Obtenez un décompte des cmdlets disponibles en ajoutant Get-Command à la cmdlet Measure-Object.

Get-Command | Measure-Object
Pour connaître le nombre de cmdlets disponibles, ajoutez la cmdlet Get-Command à la commande Measure-Object.
Pour connaître le nombre de cmdlets disponibles, ajoutez la cmdlet Get-Command à la commande Measure-Object.

Dans une session PowerShell 7, avec plusieurs modules importants chargés, y compris les modules Azure et Microsoft.Graph, PowerShell affiche 21 057 commandes disponibles.

Vous pouvez utiliser Get-Command pour trouver des commandes spécifiques. Par exemple, pour afficher toutes les commandes qui se terminent par -Process, utilisez un joker.

Get-Command *-Process | ft -a
Utilisez Get-Command avec des jokers pour trouver des commandes spécifiques.
Utilisez Get-Command avec des jokers pour trouver des commandes spécifiques.

La sortie de cet exemple montre également comment le nommage des cmdlets rend Get-Command si utile. En vous basant sur les noms des cmdlets, vous pouvez clairement comprendre quelles sont les capacités dont vous disposez avec les processus dans PowerShell.

Un autre exemple consiste à trouver des commandes dans des modules spécifiques. Supposons que vous ayez vu un exemple de script PowerShell qui crée un utilisateur dans Microsoft Entra ID et qui utilise le module Microsoft.Graph, en particulier la cmdlet New-MgUser. La commande suivante indique le module dans lequel réside la cmdlet, en supposant que le module Microsoft.Graph soit installé.

Get-Command New-MgUser | ft -a
Utilisez Get-Command pour obtenir des informations sur le module d'une cmdlet.
Utilisez Get-Command pour obtenir des informations sur le module d'une cmdlet.

Ensuite, trouvez toutes les autres commandes dans ce module comme ceci :

Get-Command -Module Microsoft.Graph.Users
Utilisez Get-Command pour voir les cmdlets d'un module PowerShell spécifique.
Utilisez Get-Command pour voir les cmdlets d'un module PowerShell spécifique.

La liste est beaucoup plus longue que le montre la capture d’écran. Pour trouver toutes les cmdlets relatives à la mise à jour des utilisateurs ou des ressources, utilisez un joker pour lister toutes les commandes de type Set-*.

Get-Command Set-* -Module Microsoft.Graph.Users
Utilisez un joker pour trouver des commandes spécifiques dans un module PowerShell.
Utilisez un joker pour trouver des commandes spécifiques dans un module PowerShell.

2/ Get-Help

Sans doute la commande la plus importante de PowerShell, Get-Help affiche la syntaxe d’aide pour les commandes de PowerShell. La façon la plus simple d’utiliser Get-Help est de lui passer un nom de commande.

Get-Help Get-Command
Utilisez la cmdlet Get-Help pour trouver la syntaxe d'une commande. data-alt-text=

Il renvoie le nom, le synopsis, la syntaxe, la description et quelques autres champs en dehors de la capture d’écran.

Pour obtenir des informations d’aide sur un paramètre spécifique, vous pouvez utiliser l’option -Parameter.

Get-Help Get-Command -Parameter Module
Trouvez plus d'informations sur les paramètres en PowerShell.
Trouvez plus d'informations sur les paramètres en PowerShell.

La sortie explique que le paramètre -Module accepte un tableau de noms de modules plutôt qu’un seul nom de module.

Vous pouvez également voir les démonstrations d’utilisation de la cmdlet.

Get-Help Get-Command -Examples
Utilisez le paramètre -Examples pour voir les scénarios d'utilisation d'une cmdlet.
Utilisez le paramètre -Examples pour voir les scénarios d'utilisation d'une cmdlet.

Si vous souhaitez voir toute l’aide concernant une commande spécifique, utilisez le paramètre -Full.

Get-Help Get-Command -Full

3/ Get-Process

Utilisée seule, la cmdlet Get-Process affiche la liste de tous les processus en cours d’exécution sur le système. Pour les compter, utilisez la cmdlet Measure-Object.

Get-Process | Measure-Object
Comptez le nombre de processus en cours d'exécution en ajoutant la sortie de Get-Process à la commande Measure-Object.
Comptez le nombre de processus en cours d'exécution en ajoutant la sortie de Get-Process à la commande Measure-Object.

Examinez des processus spécifiques en passant le nom du processus. Pour afficher les mesures du processus PowerShell 7, telles que l’utilisation de la mémoire et la consommation de temps du processeur, utilisez la commande suivante.

Get-Process pwsh
Affichez des informations plus détaillées sur le processus PowerShell 7.
Affichez des informations plus détaillées sur le processus PowerShell 7.

Les utilisateurs de Windows PowerShell exécutent plutôt la commande suivante :

Get-Process powershell

PowerShell capture de nombreuses informations sur ces processus. Dirigez la commande vers Format-List pour voir les propriétés et les valeurs de chaque processus.

Get-Process pwsh | Format-List *
Affichez les propriétés et les valeurs des processus PowerShell 7 sous forme de liste.
Affichez les propriétés et les valeurs des processus PowerShell 7 sous forme de liste.

La cmdlet Get-Process possède également des paramètres qui ajoutent des informations utiles à la sortie par défaut. Par exemple, le paramètre -IncludeUserName indique le propriétaire du processus. Ce paramètre peut nécessiter un accès élevé.

Get-Process pwsh -IncludeUserName
Le paramètre -IncludeUserName affiche le propriétaire du processus.
Le paramètre -IncludeUserName affiche le propriétaire du processus.

Le paramètre -FileVersionInfo permet d’obtenir la version du fichier exécutable du processus, ce qui peut être utile pour vérifier que la bonne version est exécutée sur le système et pour résoudre les problèmes.

Get-Process pwsh -FileVersionInfo
Obtenez des informations détaillées sur la version du fichier exécutable associé à un processus.
Obtenez des informations détaillées sur la version du fichier exécutable associé à un processus.

4/ Get-Service

La cmdlet Get-Service est semblable à la cmdlet Get-Process, mais elle affiche les services, un type de processus d’arrière-plan dans Windows. La commande suivante permet d’afficher tous les services en cours d’exécution :

Get-Service

Il y en a beaucoup, Measure-Object peut les compter :

Get-Service | Measure-Object
Utilisez la cmdlet Measure-Object pour compter le nombre de services en cours d'exécution sur la machine Windows.
Utilisez la cmdlet Measure-Object pour compter le nombre de services en cours d'exécution sur la machine Windows.

Vous pouvez obtenir des informations sur un service spécifique en passant son nom à Get-Service.

Get-Service spooler
La cmdlet Get-Service indique l'état et le nom d'affichage du service.
La cmdlet Get-Service indique l'état et le nom d'affichage du service.

Pour voir les services qui dépendent d’un autre en particulier, utilisez le paramètre -DependentServices.

Get-Service Dnscache -DependentServices
Trouvez tous les composants qui dépendent du service listé avec le paramètre -DependentServices.
Trouvez tous les composants qui dépendent du service listé avec le paramètre -DependentServices.

5/ ConvertTo-Html

La cmdlet ConvertTo-Html crée un fichier HTML à partir de la sortie PowerShell. Imaginez la sortie standard d’un tableau dans PowerShell, mais au format HTML. Pour utiliser cette commande, dirigez toute sortie PowerShell vers la commande, puis dirigez cette sortie vers un fichier à l’aide de la cmdlet Out-File.

Get-Process pwsh -FileVersionInfo | ConvertTo-Html | Out-File C:\tmp\process.html

Ouvrez le fichier résultant à partir de PowerShell :

Invoke-Item C:\tmp\process.html
Obtenez le résultat de la sortie vers un fichier HTML à l'aide de la cmdlet ConvertTo-Html.
Obtenez le résultat de la sortie vers un fichier HTML à l'aide de la cmdlet ConvertTo-Html.

Le paramètre -Property permet de spécifier les propriétés à utiliser pour un rapport HTML plus ciblé.

Get-Process pwsh -FileVersionInfo | ConvertTo-Html -Property ProductVersion,FileVersion,FileName | Out-File C:\tmp\process.html
Personnalisez le rapport HTML en nommant des propriétés de métadonnées spécifiques qui apparaîtront dans le fichier de sortie.
Personnalisez le rapport HTML en nommant des propriétés de métadonnées spécifiques qui apparaîtront dans le fichier de sortie.

6/ Get-ChildItem

La cmdlet Get-ChildItem récupère le contenu d’un chemin d’accès sur le disque, qui est généralement le contenu d’un dossier de fichiers. Toutefois, en utilisant les capacités de navigation des disques PowerShell, elle pourrait afficher d’autres volumes de données, dont le registre Windows, le registre de certificats ou même AD.

La commande renvoie le contenu du chemin actuel :

Get-ChildItem
current location contents
Affichez le contenu du chemin actuel à l'aide de la cmdlet Get-ChildItem.

La sortie indique le répertoire de travail, qui est le dossier d’installation de PowerShell.

Vous pouvez spécifier un chemin d’accès spécifique au lieu de dépendre du répertoire de travail actuel en attribuant une valeur au paramètre -Path. L’exemple suivant répertorie un chemin d’accès au registre en spécifiant HKLM: au lieu de la lettre d’un disque.

Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\PowerShellCore'
Utilisez le paramètre -Path pour dresser la liste des éléments provenant de chemins spécifiques.
Utilisez le paramètre -Path pour dresser la liste des éléments provenant de chemins spécifiques.

La commande Get-ChildItem dispose d’un grand nombre d’options de filtrage puissantes. Les plus utiles sont les propriétés -File et -Directory, qui permettent de n’afficher que les fichiers et les répertoires, respectivement.

Get-ChildItem -File
Affichez uniquement les fichiers du répertoire actuel.
Affichez uniquement les fichiers du répertoire actuel.
Get-ChildItem -Directory
folders list
Affichez uniquement les dossiers du répertoire actuel.

Si vous utilisez ces commandes depuis Windows PowerShell, il n’y a pas de colorisation du texte, contrairement à ce qu’affichent les captures d’écran. Les développeurs de PowerShell ont ajouté la prise en charge du texte ANSI coloré dans PowerShell 7.2. Elle peut être contrôlée avec la variable $PSStyle.

7/ Copy-Item

La cmdlet Copy-Item permet de copier un ou plusieurs fichiers à un emplacement spécifique. L’utilisation la plus simple de cette commande consiste à fournir le chemin d’accès source, le nom du fichier et le chemin d’accès de destination. Par exemple, pour copier le fichier Data.txt de C:\Folder1 à C:\Folder2, vous utilisez la commande suivante :

Copy-Item C:\Folder1\Data.txt -Destination C:\Folder2

La réussite de l’opération n’entraîne aucune sortie sur la console. Vous pouvez également utiliser des jokers pour copier le contenu d’un dossier entier.

Copy-Item C:\Folder1\*.* -Destination C:\Folder2

Vous pouvez également copier un dossier entier de manière récursive.

Copy-Item C:\Folder1 -Destination C:\Folder2 -Recurse

8/ Set-ExecutionPolicy

PowerShell utilise une politique d’exécution pour contrôler les scripts qui s’exécutent sur un système donné. Pour connaître la politique d’exécution actuelle, utilisez la commande Get-ExecutionPolicy.

Get-ExecutionPolicy
La cmdlet Get-ExecutionPolicy indique la politique actuelle RemoteSigned, qui bloque les scripts distants non signés.
La cmdlet Get-ExecutionPolicy indique la politique actuelle RemoteSigned, qui bloque les scripts distants non signés.
PowerShell cmdlets cheat sheetCliquez sur l'image
ci-dessus pour télécharger
gratuitement notre
aide-mémoire sur les
cmdlets PowerShell.

L’exemple montre que la politique d’exécution du système est définie sur RemoteSigned, ce qui empêche l’exécution de scripts distants s’ils ne sont pas signés par un certificat de confiance.

La cmdlet Set-ExecutionPolicy permet de modifier la politique d’exécution en indiquant la politique d’exécution souhaitée. Les noms des politiques d’exécution sont AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined et Unrestricted. Si vous souhaitez définir la politique d’exécution sur Unrestricted, procédez comme suit :

Set-ExecutionPolicy Unrestricted

Cette opération nécessite que le script soit exécuté dans un contexte élevé (en tant qu'administrateur sous Windows) et ne renvoie aucune information en cas de succès.

9/ Get-History

La cmdlet Get-History permet de récupérer une liste des commandes qui ont été saisies dans la session en cours. C'est beaucoup plus facile que d'appuyer à plusieurs reprises sur la touche fléchée vers le haut pour trouver des instructions précédemment exécutées. Exécutée seule, Get-History renvoie une liste de toutes les opérations effectuées dans la session en cours.

Get-History
Exécutez la commande Get-History pour obtenir la liste des commandes exécutées dans la session en cours.
Exécutez la commande Get-History pour obtenir la liste des commandes exécutées dans la session en cours.

L'historique complet est plus long que ce qui est présenté dans la capture d'écran. Pour contrôler le nombre de lignes, utilisez le paramètre -Count. La commande suivante permet d'afficher les cinq lignes les plus récentes.

Get-History -Count 5
Utilisez le paramètre -Count pour afficher les cinq dernières commandes PowerShell exécutées par l'utilisateur.
Utilisez le paramètre -Count pour afficher les cinq dernières commandes PowerShell exécutées par l'utilisateur.

10/ Get-Content

Il est parfois utile de lire un fichier dans la console plutôt que de s'en remettre à une application comme le Bloc-notes. La cmdlet Get-Content permet de récupérer les données d'un fichier. Par exemple, si vous souhaitez lire le fichier hosts sous Windows, vous pouvez le faire avec la commande suivante.

Get-Content -Path C:\Windows\System32\drivers\etc\hosts
read file contents
Utilisez la cmdlet Get-Content pour lire le contenu d'un fichier dans la console PowerShell.

La commande Get-Content peut surveiller les modifications apportées à un fichier, tel qu'un fichier de log, et afficher les lignes au fur et à mesure qu'elles sont écrites. Le paramètre -Wait permet d'exécuter la commande jusqu'à ce que l'utilisateur y mette fin.

Get-Content C:\tmp\log.txt -Wait

Dans l'exemple suivant, le paramètre -Tail affiche les dix dernières lignes d'un fichier.

Get-Content C:\tmp\log.txt -Tail 10

11/ Out-File

La cmdlet Out-File écrit la sortie PowerShell dans un fichier. Dirigez les données que vous souhaitez produire vers Out-File et donnez-lui un chemin d'accès. Si vous souhaitez créer un fichier appelé C:\Temp\services.txt qui contient une liste des services système, tapez ce qui suit.

Get-Service | Out-File -FilePath C:\Temp\services.txt

Comme Out-File utilise implicitement le système de formatage de PowerShell, le fichier a la même apparence que si vous aviez exécuté Get-Service et copié la sortie du terminal dans un fichier.

La cmdlet PowerShell Out-File enregistre la sortie d'une commande dans un fichier.
La cmdlet PowerShell Out-File enregistre la sortie d'une commande dans un fichier.

Si vous souhaitez ajouter des données à la fin d'un fichier existant, vous pouvez utiliser le paramètre -Append.

Get-Service | Out-File -FilePath C:\Temp\Services.txt -Append

12/ Invoke-Item

La cmdlet Invoke-Item ouvre ou exécute un fichier à l'aide de l'application associée à l'extension du fichier. Par exemple, l'utilisation de la cmdlet Invoke-Item avec un fichier HTM entraîne généralement l'ouverture du fichier dans un navigateur web.

Invoke-Item C:\tmp\process.htm

De même, l'utilisation de Invoke-Item avec un fichier .docx permet de l'ouvrir dans Microsoft Word.

Invoke-Item C:\tmp\Document1.docx

Ajoutez d'autres commandes PowerShell à votre trousseau d’administrateur

Toutes les commandes présentées dans cet article font partie de l'installation par défaut de Windows PowerShell 5.1 et PowerShell 7. Pour plus de fonctionnalités ou pour intégrer un service, vous devez installer des modules supplémentaires. Par exemple, pour gérer les utilisateurs dans Entra ID, installez le module Microsoft.Graph.Users avec la commande suivante.

Install-Module Microsoft.Graph.Users

Ensuite, utilisez Import-Module pour charger le module dans votre session PowerShell actuelle.

Import-Module Microsoft.Graph.Users

Utilisez Get-Module pour obtenir des informations sur le module.

Get-Module Microsoft.Graph.Users

Ensuite, à l'aide de Get-Command, voyez quelles commandes sont fournies avec le module.

Get-Command -Module Microsoft.Graph.Users

Pour approfondir sur Windows