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.
Get-Module -All
shell2. 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é.
Get-Command
shell3. 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.
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
shell4. 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.
Get-Process
shell5. 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.
Get-Service
shell6. 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 :
Stop-Process -Name "nomduprocessus"
shellStop-Process -Id 3582 -Confirm -PassThru
shellL’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 :
Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
shell8. 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 :
Get-Date | ConvertTo-Xml
shell9. 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 :
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
shell10. 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 :
Get-History
shellCette spécification vous permet de récupérer uniquement les dix dernières commandes PowerShell :
Get-History -Count 10
shell11. 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 :
Clear-History
shellVous 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 ».
Clear-History -Command *Help*, *Syntax
shell12. 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.
Add-History
shell13. 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.
Get-Process | Out-File -FilePath .\Process.txt
shell14. 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 :
Copy-Item "C:\Ordner1\Datei.txt" -Destination "C:\Ordner2"
shell15. 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é.
Get-ChildItem -Path C:\Example
shellLes 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).
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
shell17. 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 :
Invoke-Item "C:\Test\Example.doc"
shell18. 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.
Start-Job -ScriptBlock { Get-Process -Name pwsh }
shellProfitez de votre propre serveur, avec hardware dédié, intégration Cloud, facturation à la minute et processeur Intel® Xeon® ou AMD.
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 :
Clear-Content C:\Temp\Example.txt
shell20. 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
shell21. 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 (« <== ») et celles qui apparaissent uniquement dans l’objet de diffé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 <==
shellLes é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 :
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
shell23. 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.
Get-Process | Sort-Object -Property WS | Select-Object -Last 3
shell24. 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).
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
shell25. 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 :
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
shell26. 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 ».
Set-Service -Name "Nouveau poste de travail" -DisplayName "Ancien poste de travail"
shell27. 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"
shell28. 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 :
Restart-Computer
shellPour certains autres ordinateurs sur votre réseau :
Restart-Computer -ComputerName Server01, Server03
shell29. 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 » :
PS C:\> Restart-Service -DisplayName "net*"
shell30. 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.
Clear-RecycleBin
shell31. Get-ComputerInfo
La commande Get-ComputerInfo sert à récupérer les propriétés du système et celles du système d’exploitation.
Get-ComputerInfo
shell32. 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 ».
Move-Item -Path C:\ancien.txt -Destination D:\Temp\nouveau.txt
shellSurveillance 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 :
PS C:\> Debug-Process -Name "Explorer"
shellPour 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 :
Get-PSBreakpoint | Enable-PSBreakpoint
shellPour activer les points d’arrêt à l’aide de leur ID, privilégiez plutôt cette commande :
Enable-PSBreakpoint -ID 0, 3, 4
shell35. 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 :
Disable-PSBreakpoint -Id 0
shell36. 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 :
Get-Counter -ListSet *
shell37. 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 :
Start-Sleep -Seconds 2
shell38. 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
shell39. 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.
Test-Connection -TargetName Server02 -IPv6
shell40. 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 :
Get-WinEvent -ListLog *
shell