En faisant appel aux bonnes commandes Po­wer­Shell, vous pouvez cibler l’uti­li­sa­tion de certains modules. Les dif­fé­rentes cmdlets sont struc­tu­rées de façon logique. Vous avez également la pos­si­bi­lité de les compléter à l’aide de pa­ra­mètres sup­plé­men­taires. Découvrez avec nous les 40 Po­wer­Shell commands les plus im­por­tantes pour optimiser le travail au sein de votre système ou réseau.

Po­wer­Shell commands : de quoi s’agit-il ?

Po­wer­Shell, la suite lo­gi­cielle préins­tal­lée depuis la version Windows 7, vous permet de saisir des commandes Po­wer­Shell qui sont ensuite exécutées par Windows. En plus des commandes cmd de la ligne de commande, nom­breuses sont les autres commandes (ou cmdlets) que seule la suite Po­wer­Shell est en mesure de com­prendre. Ces cmdlets sont composées d’un verbe et d’un subs­tan­tif, les deux éléments étant séparés par un tiret. De plus, des pa­ra­mètres fa­cul­ta­tifs peuvent vous permettre de spécifier les Po­wer­Shell commands. Une espace sépare chacun de ces pa­ra­mètres. Il y a bien longtemps que la suite Po­wer­Shell n’est plus seulement utilisée par les ad­mi­nis­tra­teurs, car elle rend également de précieux services aux dé­ve­lop­peurs. Il existe des centaines de commandes Po­wer­Shell déjà ins­tal­lées par défaut. Découvrez avec nous les plus im­por­tantes d’entre elles.

Les prin­ci­pales commandes Po­wer­Shell

Les commandes Po­wer­Shell per­met­tent de réaliser des tâches ad­mi­nis­tra­tives 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é­per­to­rient d’autres Po­wer­Shell commands, per­met­tent de créer les con­fi­gu­ra­tions de sécurité né­ces­saires ou encore d’effectuer des analyses utiles. Les prin­ci­pales commandes Po­wer­Shell sont notamment les suivantes :

1. Get-Module -All

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

Get-Module -All
shell

2. Get-Command

Il existe plusieurs commandes Po­wer­Shell pré­dé­fi­nies. Pour obtenir un aperçu des Po­wer­Shell commands dont vous disposez à un moment donné, vous pouvez faire appel à la commande Get-Command. Celle-ci ré­per­to­rie de façon claire toutes les actions que vous pouvez effectuer, avec une ex­pli­ca­tion rapide con­cer­nant la cmdlet cor­res­pon­dante. Cette commande peut également s’appliquer à vos modules sup­plé­men­taires, si vous en avez installé.

Get-Command
shell

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 in­for­ma­tions sur une commande et sur les pos­si­bi­li­té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 or­di­na­teur ; elle vous renvoie alors l’ensemble des in­for­ma­tions dis­po­nibles. Pour profiter de cette solution, il vous suffit de combiner la commande Get-Help avec la commande dont la syntaxe vous intéresse.

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

4. Get-Process

Dans de nombreux cas, il peut s’avérer utile d’obtenir un aperçu de l’ensemble des ap­pli­ca­tions, pro­grammes et processus actifs exécutés à un moment donné sur votre système, et ce, aussi ra­pi­de­ment que possible. La commande Get-Process vous permet d’obtenir cette vue d’ensemble. Il vous suffit de l’associer à une ap­pli­ca­tion par­ti­cu­lière pour recevoir des in­for­ma­tions sup­plé­men­taires à son sujet.

Get-Process
shell

5. Get-Service

Le fonc­tion­ne­ment de la commande Get-Service est similaire à celui de la cmdlet Get-Process, à une dif­fé­rence près : la commande Get-Service renvoie des in­for­ma­tions sur tous les services actifs. Pour obtenir des in­for­ma­tions sur un service en par­ti­cu­lier, ou sur un type spé­ci­fique parmi dif­fé­rents services dif­fé­rents, contentez-vous de préciser votre demande.

Get-Service
shell

6. Stop-Process

Plusieurs commandes Po­wer­Shell vous per­met­tent également d’in­ter­rompre des processus en passant par le shell ; la commande Stop-Process fait partie des pos­si­bi­li­tés qui s’offrent à vous. Pour définir le processus cor­res­pon­dant, vous pouvez utiliser son nom, son ID ou d’autres attributs le con­cer­nant. Vous trouverez un exemple ci-dessous :

Stop-Process -Name "nomduprocessus"
shell
Stop-Process -Id 3582 -Confirm -PassThru
shell

L’extrait de code « -Confirm » sert à demander une con­fir­ma­tion de la commande. « -PassThru », quant à lui, permet de demander une con­fir­ma­tion de l’in­ter­rup­tion du processus. Attention : cette commande n’est pas au­to­ma­tique.

7. ConvertTo-HTML

Pour iden­ti­fier aussi vite que possible tout problème ou toute com­pli­ca­tion éven­tuelle, il peut s’avérer très utile de bé­né­fi­cier d’une re­pré­sen­ta­tion claire. La commande ConvertTo-HTML vous permet de trans­fé­rer le résultat des Po­wer­Shell commands qui vous in­té­res­sent dans un fichier HTML. Toutes les in­for­ma­tions sont ainsi affichées sous forme de colonnes, pour une meilleure li­si­bi­lité. Vous trouverez ci-dessous un exemple de ce à quoi la commande peut res­sem­bler :

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

8. ConvertTo-Xml

Une commande similaire existe également si vous avez besoin d’une re­pré­sen­ta­tion basée sur XML pour un objet en par­ti­cu­lier. Pour ce faire, il vous suffit d’utiliser la commande ConvertTo-Xml. Dans l’exemple suivant, la date est ainsi convertie au format XML :

Get-Date | ConvertTo-Xml
shell

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 com­mu­nique le résultat par l’in­ter­mé­diaire d’un pipe, et vous transmet ainsi uni­que­ment les in­for­ma­tions re­cher­ché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 :

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

10. Get-History

Vous cherchez à lister l’ensemble des commandes Po­wer­Shell saisies pendant une session ? Alors la commande Get-History est la cmdlet qu’il vous faut. Suivez l’exemple ci-dessous pour ré­per­to­rier l’ensemble des Po­wer­Shell commands con­cer­nées :

Get-History
shell

Cette spé­ci­fi­ca­tion vous permet de récupérer uni­que­ment les dix dernières commandes Po­wer­Shell :

Get-History -Count 10
shell

11. Clear-History

Bien entendu, vous avez aussi la pos­si­bi­lité d’effacer la liste des Po­wer­Shell commands utilisées. Pour supprimer l’ensemble de ces saisies, utilisez sim­ple­ment la cmdlet Clear-History :

Clear-History
shell

Vous souhaitez uni­que­ment supprimer certaines commandes Po­wer­Shell ? Il vous suffit pour cela d’ajouter les pa­ra­mètres cor­res­pon­dants. Le code ci-dessous permet, par exemple, de supprimer toutes les Po­wer­Shell commands contenant le terme « Help » ou se terminant par « Syntax ».

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

12. Add-History

De la même manière, il est possible d’ajouter des commandes Po­wer­Shell à une session. De cette façon, elles pourront être appelées di­rec­te­ment une prochaine fois. Il convient d’utiliser la cmdlet Add-History à cet effet.

Add-History
shell

13. Out-File

Pour en­re­gis­trer le résultat de vos commandes Po­wer­Shell sur votre or­di­na­teur, faites appel à la cmdlet Out-File ; celle-ci dépose alors les Po­wer­Shell commands dans un fichier texte brut, en suivant le chemin indiqué par vos soins.

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

14. Copy-Item

La suite Po­wer­Shell vous donne aussi la pos­si­bi­lité de copier des éléments, puis de stocker cette copie à un autre em­pla­ce­ment. Pour ce faire, utilisez la commande Copy-Item ; n’oubliez pas de préciser le ré­per­toire dans lequel il convient d’en­re­gis­trer ladite copie. Le fonc­tion­ne­ment de cette commande est le suivant :

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

15. Get-ChildItem

La commande Get-ChildItem permet de récupérer des éléments stockés sur un ou plusieurs em­pla­ce­ments. 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 mo­di­fi­ca­tion, la taille du fichier ainsi que leur nom. Si l’em­pla­ce­ment est vide, aucun résultat n’est alors renvoyé.

Get-ChildItem -Path C:\Example
shell

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é­per­toire) ;
  • h (élément masqué) ;
  • l (lien) ;
  • r (élément en lecture seule) ;
  • s (système).

16. Set-Au­then­ti­co­de­Sig­na­ture

Vous cherchez à protéger vos fichiers ? Vous pouvez leur attribuer une signature Au­then­ti­code en utilisant la commande Set-Au­then­ti­co­de­Sig­na­ture. Attention néanmoins : cette commande fonc­tionne uni­que­ment avec les fichiers prenant en charge le Subject Interface Package (ou SIP).

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

17. Invoke-Item

La commande Invoke-Item constitue la solution la plus simple pour exécuter l’action standard d’un fichier par­ti­cu­lier. Cette commande permet par exemple de faire en sorte qu’un fichier exé­cu­table soit exécuté di­rec­te­ment, ou encore qu’un fichier de document soit bien ouvert dans l’ap­pli­ca­tion associée. Dans l’exemple ci-dessous, le fichier est appelé par défaut dans Microsoft Word :

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

18. Start-Job

Vous souhaitez dé­clen­cher une tâche d’arrière-plan sur votre or­di­na­teur local ? Il existe justement une commande conçue pour cela. En effet, la commande Start-Job vous permet d’exécuter une commande spé­ci­fique en arrière-plan, sans aucune in­te­rac­tion avec la session en cours.

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

Effectuer des actions en utilisant des Po­wer­Shell commands

Si les commandes Po­wer­Shell pré­sen­tées ci-dessus vous per­met­taient surtout de profiter d’une vue d’ensemble, il est également possible d’effectuer de nom­breuses actions en utilisant les bonnes cmdlets, et donc d’utiliser votre système de façon pro­duc­tive. Découvrez les Po­wer­Shell commands suivantes, qui peuvent gran­de­ment 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 pro­pre­ment dit. Vous trouverez ci-dessous un exemple en lien avec cette commande :

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

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 :

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

21. Compare-Object

Vous pouvez utiliser la cmdlet Compare-Object pour éviter d’avoir à comparer ma­nuel­le­ment dif­fé­rents ensembles d’objets. Cette commande se charge alors de générer un rapport qui pointe du doigt les dif­fé­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 dif­fé­rence. C’est à vous de dé­ter­mi­ner les facteurs que vous souhaitez comparer. Si vous choi­sis­sez d’ignorer cette étape, seuls les résultats des chaînes de ca­rac­tères seront alors comparés entre eux. Le résultat établit une dif­fé­rence entre les pro­prié­tés qui ap­pa­rais­sent uni­que­ment dans l’objet de référence (« <== ») et celles qui ap­pa­rais­sent uni­que­ment dans l’objet de dif­fé­rence (« ==> »). Dans l’exemple ci-dessous, « Document1.txt » contient les valeurs « Berlin », « Londres » et « Paris », contre « Berlin », « Vienne » et « Amsterdam » pour « Document2.txt ».

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

Les éléments qui ap­pa­rais­sent 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 Po­wer­Shell par­ti­cu­liè­re­ment 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 ca­rac­tères « 1.2.3.4 » pour le cons­truc­teur, la commande se présente alors comme suit :

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

23. Select-Object

Avec la commande Select-Object, sé­lec­tion­nez un objet (ou un groupe d’objets) disposant des pro­prié­tés que vous avez spé­ci­fiées. Pour ce faire, vous pouvez définir les pa­ra­mètres suivants :

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

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

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

24. Set-Alias

Les rac­cour­cis Windows cons­ti­tuent une bonne solution si vous souhaitez exécuter des actions encore plus ra­pi­de­ment. En principe, la suite Po­wer­Shell propose elle aussi cette option. Le système vous permet en effet de mettre en place un raccourci pour dif­fé­rentes commandes Po­wer­Shell à 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).

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

25. Set-Location

Pour changer l’em­pla­ce­ment de votre mémoire de travail, vous pouvez utiliser la commande Set-Location. Vous pouvez faire votre choix parmi les em­pla­ce­ments dis­po­nibles, notamment des ré­per­toires, des sous-ré­per­toires, des em­pla­ce­ments d’en­re­gis­tre­ment ou encore des chemins des four­nis­seurs. Dans l’exemple ci-dessous, nous avons choisi le lecteur C: en tant qu’em­pla­ce­ment :

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

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 pos­si­bi­lité de modifier les pro­prié­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 ».

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

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 :

Set-TimeZone -Id "UTC"
shell

28. Restart-Computer

Vous pouvez choisir de re­dé­mar­rer le système d’ex­ploi­ta­tion, que ce soit sur votre or­di­na­teur local ou sur un or­di­na­teur distant. La commande Po­wer­Shell cor­res­pon­dante se nomme « Restart-Computer ». Vous pouvez voir ci-dessous comment elle se présente.

Pour votre or­di­na­teur local :

Restart-Computer
shell

Pour certains autres or­di­na­teurs sur votre réseau :

Restart-Computer -ComputerName Server01, Server03
shell

29. Restart-Service

Si vous cherchez à arrêter et à re­dé­mar­rer un service en passant par des commandes Po­wer­Shell, la cmdlet Restart-Service est tout à fait celle qu’il vous faut. Ainsi, vous pouvez par exemple choisir de re­dé­mar­rer tous les services dont le nom commence par « Net » :

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

30. Clear-Re­cy­cle­Bin

N’oubliez pas votre corbeille, qui doit être vidée ré­gu­liè­re­ment. D’ailleurs, n’hésitez pas à vous servir de la suite Po­wer­Shell pour effectuer cette action. Pour ce faire, il vous suffit de faire appel à la commande Clear-Re­cy­cle­Bin.

Clear-RecycleBin
shell

31. Get-Com­pu­te­rInfo

La commande Get-Com­pu­te­rInfo sert à récupérer les pro­prié­tés du système et celles du système d’ex­ploi­ta­tion.

Get-ComputerInfo
shell

32. Move-Item

Dif­fé­rentes commandes Po­wer­Shell sont dis­po­nibles si vous cherchez à déplacer un élément d’un em­pla­ce­ment vers un autre. La commande Move-Item reste toutefois la solution la plus cou­ram­ment utilisée. Dans l’exemple ci-dessous, le fichier « ancien.txt » est déplacé depuis le lecteur C: vers le ré­per­toire D:\Temp, avant d’être renommé en « nouveau.txt ».

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

Sur­veil­lance et débogage avec les commandes Po­wer­Shell ap­pro­priées

Les Po­wer­Shell commands qui vous per­met­tent d’assurer la sur­veil­lance de votre système et de procéder à des vé­ri­fi­ca­tions peuvent également s’avérer par­ti­cu­liè­re­ment utiles, tout par­ti­cu­liè­re­ment lorsque vous cherchez à tester un nouveau réseau et ses per­for­mances en con­di­tions réelles. Pour ce faire, n’hésitez pas à faire appel aux commandes Po­wer­Shell pré­sen­tées ci-dessous.

33. Debug-Process

Le débogage est un processus essentiel si vous tenez à vous assurer du bon fonc­tion­ne­ment de l’ensemble de vos pa­ra­mètres et processus. Pour vous y adonner, commencez par té­lé­char­ger et con­fi­gu­rer les dé­bo­gueurs ap­pro­priés. Une fois cette étape effectuée, appliquez les dé­bo­gueurs à l’aide de la commande Debug-Process. L’exemple suivant met en scène un débogueur pour notre ex­plo­ra­teur :

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

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-PS­Break­point

Pour activer certains points d’arrêt (également appelés break­points), servez-vous de la commande Enable-PS­Break­point. Sur le plan technique, celle-ci définit la valeur de la cmdlet sur « true » (vraie). Cette commande Po­wer­Shell vous permet d’activer l’ensemble des points d’arrêt de votre session :

Get-PSBreakpoint | Enable-PSBreakpoint
shell

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

Enable-PSBreakpoint -ID 0, 3, 4
shell

35. Disable-PS­Break­point

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

Disable-PSBreakpoint -Id 0
shell

36. Get-Counter

Si vous tra­vail­lez sur des appareils Windows, vous pouvez utiliser la suite Po­wer­Shell pour accéder à leurs données de per­for­mance. Pour ce faire, faites appel à la commande Get-Counter. N’hésitez pas à utiliser cette commande pour votre or­di­na­teur local comme pour des or­di­na­teurs distants. Dans l’exemple ci-dessous, nous avons choisi de récupérer les données de l’or­di­na­teur local :

Get-Counter -ListSet *
shell

37. Start-Sleep

En cas de surcharge du système, il peut s’avérer crucial d’avoir la pos­si­bi­lité de mettre en pause un script ou une session. La suite Po­wer­Shell 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 in­ter­rom­pue pendant deux secondes :

Start-Sleep -Seconds 2
shell

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).

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

39. Test-Con­nec­tion

Vous avez aussi la pos­si­bi­lité de tester les con­nexions au sein de votre réseau en utilisant la suite Po­wer­Shell. Par l’in­ter­mé­diaire de la commande Test-Con­nec­tion, celle-ci envoie un paquet de demande d’écho ICMP à des des­ti­na­taires 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.

Test-Connection -TargetName Server02 -IPv6
shell

40. Get-WinEvent

Dif­fé­rentes commandes Po­wer­Shell sont dis­po­nibles si vous souhaitez consulter un ou plusieurs journaux d’évé­ne­ments. La cmdlet Get-WinEvent est sans doute la plus pratique de toutes. Pour accéder à l’ensemble des journaux de votre or­di­na­teur local, utilisez la commande suivante :

Get-WinEvent -ListLog *
shell
Aller au menu principal