 
								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 
  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 
  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 
  Ensuite, trouvez toutes les autres commandes dans ce module comme ceci :
Get-Command -Module Microsoft.Graph.Users 
  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 
  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 
  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 
  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 
  Si vous souhaitez voir toute l’aide concernant une commande spécifique, utilisez le paramètre -Full.
Get-Help Get-Command -Full3/ 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 
  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 
  Les utilisateurs de Windows PowerShell exécutent plutôt la commande suivante :
Get-Process powershellPowerShell 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 * 
  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 -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 
  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-ServiceIl y en a beaucoup, Measure-Object peut les compter :
Get-Service | Measure-Object 
  Vous pouvez obtenir des informations sur un service spécifique en passant son nom à Get-Service.
Get-Service spooler 
  Pour voir les services qui dépendent d’un autre en particulier, utilisez le paramètre -DependentServices.
Get-Service Dnscache -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.htmlOuvrez le fichier résultant à partir de PowerShell :
Invoke-Item C:\tmp\process.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 
  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 
  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' 
  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 
  Get-ChildItem -Directory 
  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:\Folder2La 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:\Folder2Vous pouvez également copier un dossier entier de manière récursive.
Copy-Item C:\Folder1 -Destination C:\Folder2 -Recurse8/ 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 
   Cliquez sur l'image
Cliquez 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 UnrestrictedCette 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 
  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 
  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 
  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 -WaitDans l'exemple suivant, le paramètre -Tail affiche les dix dernières lignes d'un fichier.
Get-Content C:\tmp\log.txt -Tail 1011/ 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.txtComme 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.
 
  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 -Append12/ 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.htmDe même, l'utilisation de Invoke-Item avec un fichier .docx permet de l'ouvrir dans Microsoft Word.
Invoke-Item C:\tmp\Document1.docxAjoutez 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.UsersEnsuite, utilisez Import-Module pour charger le module dans votre session PowerShell actuelle.
Import-Module Microsoft.Graph.UsersUtilisez Get-Module pour obtenir des informations sur le module.
Get-Module Microsoft.Graph.UsersEnsuite, à l'aide de Get-Command, voyez quelles commandes sont fournies avec le module.
Get-Command -Module Microsoft.Graph.Users
 
		 
	 
					 
					 
									 
					 
									 
									