Windows PowerShell utilise le substantif Item pour faire référence aux éléments situés sur un lecteur Windows PowerShell. Avec le fournisseur FileSystem de Windows PowerShell, un Item peut être un fichier, un dossier ou le lecteur Windows PowerShell. Répertorier et utiliser ces éléments est une tâche de base essentielle dans la plupart des paramètres administratifs, c'est pourquoi nous souhaitons discuter de ces tâches en détail.

Énumération de fichiers, dossiers et clés de Registre (Get-ChildItem)

L'obtention d'une collection d'éléments d'un emplacement particulier étant une tâche particulièrement courante, l'applet de commande Get-ChildItem est conçue spécifiquement pour retourner tous les éléments situés dans un conteneur tel qu'un dossier.

Si vous souhaitez retourner tous les fichiers et dossiers contenus directement dans le dossier C:\Windows, tapez :

PS> Get-ChildItem -Path C:\Windows
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-16   8:10 AM          0 0.log
-a---        2005-11-29   3:16 PM         97 acc1.txt
-a---        2005-10-23  11:21 PM       3848 actsetup.log
...

La liste est similaire à celle que vous obtenez en entrant la commande dir dans Cmd.exe ou la commande ls dans un interpréteur de commandes UNIX.

Vous pouvez effectuer des listages très complexes en utilisant les paramètres de l'applet de commande Get-ChildItem. Nous examinerons quelques scénarios par la suite. Vous pouvez consulter la syntaxe de l'applet de commande Get-ChildItem en tapant :

PS> Get-Command -Name Get-ChildItem -Syntax

Ces paramètres peuvent être combinés et mis en correspondance pour obtenir une sortie très personnalisée.

Listage de tous les éléments contenus (-Recurse)

Pour voir à la fois les éléments d'un dossier Windows et tous les éléments contenus dans les sous-dossiers, utilisez le paramètre Recurse de Get-ChildItem. La liste affiche tous les éléments du dossier Windows et de ses sous-dossiers. Par exemple :

PS> Get-ChildItem -Path C:\WINDOWS -Recurse

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\WINDOWS\AppPatch
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM    1852416 AcGenral.dll
...

Filtrage d'éléments par nom (-Name)

Pour afficher uniquement les noms d'éléments, utilisez le paramètre Name de Get-Childitem :

PS> Get-ChildItem -Path C:\WINDOWS -Name
addins
AppPatch
assembly
...

Listage forcé des éléments masqués (-Force)

Les éléments qui sont normalement invisibles dans l'Explorateur Windows ou Cmd.exe n'apparaissent pas dans la sortie d'une commande Get-ChildItem . Pour afficher les éléments masqués, utilisez le paramètre Force de Get-ChildItem. Par exemple :

Get-ChildItem -Path C:\Windows -Force

Ce paramètre est nommé Force parce que vous pouvez remplacer de force le comportement normal de la commande Get-ChildItem. Force est un paramètre largement utilisé qui force une action qu'une applet de commande n'exécuterait pas normalement, à l'exception des actions susceptibles de compromettre la sécurité du système.

Mise en correspondance de noms d'éléments avec des caractères génériques

La commande The Get-ChildItem accepte les caractères génériques dans le chemin d'accès aux éléments à lister.

Parce que la concordance par caractères génériques est contrôlée par le moteur Windows PowerShell, toutes les applets de commande qui acceptent des caractères génériques utilisent la même notation et présentent le même comportement de mise en correspondance. La notation générique de Windows PowerShell inclut :

  • l'astérisque (*), qui fait correspondre zéro ou plusieurs occurrences de tout caractère ;

  • le point d'interrogation (?), qui correspond exactement à un caractère ;

  • Les caractères crochet gauche ([) et crochet droit (]), qui encadrent un jeu de caractères à mettre en correspondance.

Voici quelques exemples qui illustrent le fonctionnement de la spécification de caractères génériques.

Pour rechercher tous les fichiers du répertoire Windows portant l'extension .log et dont le nom de base compte exactement cinq caractères, entrez la commande suivante :

PS> Get-ChildItem -Path C:\Windows\?????.log
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
...
-a---        2006-05-11   6:31 PM     204276 ocgen.log
-a---        2006-05-11   6:31 PM      22365 ocmsn.log
...
-a---        2005-11-11   4:55 AM         64 setup.log
-a---        2005-12-15   2:24 PM      17719 VxSDM.log
...

Pour rechercher tous les fichiers dont le nom commence par la lettre x dans le répertoire Windows, tapez :

 Get-ChildItem -Path C:\Windows\x*

Pour rechercher tous les fichiers dont le nom commence par x ou z, tapez :

Get-ChildItem -Path C:\Windows\[xz]*

Exclusion d'éléments (-Exclude)

Vous pouvez exclure des éléments spécifiques à l'aide du paramètre Exclude de Get-ChildItem. Cela vous permet d'exécuter un filtrage complexe en une seule instruction.

Par exemple, supposez que vous essayez de rechercher la DLL du service de temps Windows dans le dossier System32, et que tout ce dont vous vous souvenez du nom de la DLL est qu'il commence par « W » et contient « 32 ».

Une expression telle que w*32*.dll recherchera toutes les DLL qui satisfont ces conditions, mais peut aussi retourner toutes les DLL de compatibilité Windows 95 et Windows 16 bits qui incluent « 95 » ou « 16 » dans leur nom. Vous pouvez omettre les fichiers dont le nom contient ces nombres en utilisant le paramètre Exclude avec le modèle *[9516]* :

PS> Get-ChildItem -Path C:\WINDOWS\System32\w*32*.dll -Exclude *[9516]*

Directory: Microsoft.PowerShell.Core\FileSystem::C:\WINDOWS\System32

Mode LastWriteTime Length Name

---- ------------- ------ ----

-a--- 2004-08-04 8:00 AM 174592 w32time.dll

-a--- 2004-08-04 8:00 AM 22016 w32topl.dll

-a--- 2004-08-04 8:00 AM 101888 win32spl.dll

-a--- 2004-08-04 8:00 AM 172032 wldap32.dll

-a--- 2004-08-04 8:00 AM 264192 wow32.dll

-a--- 2004-08-04 8:00 AM 82944 ws2_32.dll

-a--- 2004-08-04 8:00 AM 42496 wsnmp32.dll

-a--- 2004-08-04 8:00 AM 22528 wsock32.dll

-a--- 2004-08-04 8:00 AM 18432 wtsapi32.dll

Combinaison de paramètres de Get-ChildItem

Vous pouvez utiliser plusieurs paramètres de l'applet de commande Get-ChildItem dans la même commande. Avant de combiner des paramètres, soyez sûr de bien comprendre la concordance par caractères génériques. Par exemple, la commande suivante ne retourne aucun résultat :

PS> Get-ChildItem -Path C:\Windows\*.dll -Recurse -Exclude [a-y]*.dll

Il n'y a pas de résultats, bien qu'il y ait deux DLL dont le nom commence par la lettre « z » dans le dossier Windows.

Aucun résultat n'a été retourné parce que nous avons spécifié le caractère générique dans le cadre du chemin d'accès. La commande était récursive, mais l'applet de commande Get-ChildItem a limité les éléments à ceux du dossier Windows dont le nom se termine par « .dll ».

Pour spécifier une recherche récursive des fichiers dont le nom correspond à un modèle spécial, utilisez le paramètre -Include.

PS> Get-ChildItem -Path C:\Windows -Include *.dll -Recurse -Exclude [a-y]*.dll

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32\Setup


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM       8261 zoneoc.dll


    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\Windows\System32


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2004-08-04   8:00 AM     337920 zipfldr.dll




Table des matières