Un élément que vous voyez sur les lecteurs Windows PowerShell, tels que les fichiers et dossiers des lecteurs de système de fichiers et les clés de Registre des lecteurs de Registre Windows PowerShell, est appelé « Item » (élément) dans Windows PowerShell. Le nom des applets de commande qui utilisent ces éléments comprend le substantif Item.

La sortie de la commande Get-Command -Noun Item montre qu'il existe neuf applets de commande Item Windows PowerShell.

PS> Get-Command -Noun Item

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Clear-Item                      Clear-Item [-Path] <String[]...
Cmdlet          Copy-Item                       Copy-Item [-Path] <String[]>...
Cmdlet          Get-Item                        Get-Item [-Path] <String[]> ...
Cmdlet          Invoke-Item                     Invoke-Item [-Path] <String[...
Cmdlet          Move-Item                       Move-Item [-Path] <String[]>...
Cmdlet          New-Item                        New-Item [-Path] <String[]> ...
Cmdlet          Remove-Item                     Remove-Item [-Path] <String[...
Cmdlet          Rename-Item                     Rename-Item [-Path] <String>...
Cmdlet          Set-Item                        Set-Item [-Path] <String[]> ...

Création d'éléments (New-Item)

Pour créer un élément dans le système de fichiers, utilisez l'applet de commande New-Item. Incluez le paramètre Path avec le chemin d'accès à l'élément et le paramètre ItemType avec la valeur « file » (fichier) ou « directory » (répertoire).

Par exemple, pour créer un répertoire nommé « New.Directory » dans le répertoire C:\Temp, tapez :

PS> New-Item -Path c:\temp\New.Directory -ItemType Directory

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

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18  11:29 AM            New.Directory

Pour créer un fichier, remplacez la valeur du paramètre ItemType par « file ». Par exemple, pour créer un fichier nommé « file1.txt » dans le répertoire New.Directory, tapez :

PS> New-Item -Path C:\temp\New.Directory\file1.txt -ItemType file

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\temp\New.Directory

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-18  11:44 AM          0 file1

Vous pouvez utiliser la même technique pour créer une clé de Registre. En fait, une clé de Registre est plus facile à créer, car le seul type d'élément du Registre Windows est une clé. (Les entrées de Registre sont des propriétés d'élément.) Par exemple, pour créer une clé nommée « _Test » dans la sous-clé CurrentVersion, tapez :

PS> New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\_Test

   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Micros
oft\Windows\CurrentVersion

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 _Test                          {}

Lorsque vous tapez un chemin d'accès de Registre, veillez à inclure les deux-points (:) dans le nom des lecteurs Windows PowerShell, HKLM: et HKCU:. Sans les deux-points, Windows PowerShell ne reconnaît pas le nom de lecteur dans le chemin d'accès.

Pourquoi les valeurs du Registre ne sont pas des éléments

Lorsque vous utilisez l'applet de commande Get-ChildItem pour rechercher les éléments d'une clé de Registre, vous ne verrez jamais les véritables entrées du Registre ou leur valeur.

Par exemple, la clé de Registre HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run contient habituellement plusieurs entrées de Registre qui représentent les applications qui s'exécutent lorsque le système démarre.

Toutefois, lorsque vous utilisez Get-ChildItem pour rechercher des éléments enfants de la clé, vous ne verrez que la sous-clé OptionalComponents de la clé :

PS> Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Run
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Micros
oft\Windows\CurrentVersion\Run
SKC  VC Name                           Property
---  -- ----                           --------
  3   0 OptionalComponents             {}

Il serait pratique de traiter les entrées du Registre comme des éléments, mais vous ne pouvez pas spécifier de chemin d'accès à une entrée du Registre d'une manière propre à garantir son caractère unique. La notation de chemin d'accès ne fait pas la distinction entre la sous-clé de Registre nommée Run et l'entrée de Registre ((Default)) de la sous-clé Run. En outre, parce que les noms d'entrées de Registre peuvent contenir la barre oblique inverse (\), si les entrées de Registre étaient des éléments, vous ne pourriez pas utiliser la notation de chemin d'accès pour distinguer une entrée de Registre nommée Windows\CurrentVersion\Run de la sous-clé située dans ce chemin d'accès.

Affectation d'un nouveau nom à des éléments existants (Rename-Item)

Pour renommer un fichier ou un dossier, utilisez l'applet de commande Rename-Item. La commande suivante modifie le nom du fichier file1.txt en fileOne.txt.

PS> Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt

L'applet de commande Rename-Item peut renommer un fichier ou un dossier, mais ne peut pas déplacer un élément. La commande suivante échoue, car elle essaie de déplacer le fichier du répertoire New.Directory vers le répertoire Temp.

PS> Rename-Item -Path C:\temp\New.Directory\fileOne.txt c:\temp\fileOne.txt
Rename-Item : Cannot rename because the target specified is not a path.
At line:1 char:12
+ Rename-Item  <<<< -Path C:\temp\New.Directory\fileOne c:\temp\fileOne.txt

Déplacement d'éléments (Move-Item)

Pour déplacer un fichier ou un dossier, utilisez l'applet de commande Move-Item.

Par exemple, la commande suivante déplace le répertoire New.Directory du répertoire C:\temp vers la racine du lecteur C:. Pour vérifier que l'élément a été déplacé, incluez le paramètre PassThru de l'applet de commande Move-Item. Sans Passthru, l'applet de commande Move-Item n'affiche aucun résultat.

PS> Move-Item -Path C:\temp\New.Directory -Destination C:\ -PassThru

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

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18  12:14 PM            New.Directory

Copie d'éléments (Copy-Item)

Si vous connaissez les opérations de copie dans d'autres interpréteurs de commandes, vous pouvez trouver le comportement de l'applet de commande Copy-Item de Windows PowerShell inhabituel. Lorsque vous copiez un élément d'un emplacement vers un autre, Copy-Item ne copie pas son contenu par défaut.

Par exemple, si vous copiez le répertoire New.Directory du lecteur C: dans le répertoire C:\temp, la commande réussit, mais les fichiers de New.Directory ne sont pas copiés.

PS> Copy-Item -Path C:\New.Directory -Destination C:\temp

Si vous affichez le contenu de C:\temp\New.Directory, vous constaterez qu'il ne contient pas de fichiers :

PS> Get-ChildItem -Path C:\temp\New.Directory
PS>

Pourquoi l'applet de commande Copy-Item ne copie-t-elle pas le contenu vers le nouvel emplacement ?

L'applet de commande Copy-Item a été conçue pour être générique ; elle ne sert pas uniquement à copier des fichiers et des dossiers. En outre, même lorsque vous copiez des fichiers et des dossiers, vous pouvez souhaiter ne copier que le conteneur et non les éléments qui s'y trouvent.

Pour copier tout le contenu d'un dossier, incluez le paramètre Recurse de l'applet de commande Copy-Item dans la commande. Si vous avez déjà copié le répertoire sans son contenu, ajoutez le paramètre Force qui vous permet de remplacer le dossier vide.

PS> Copy-Item -Path C:\New.Directory -Destination C:\temp -Recurse -Force -Passthru
    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\temp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18   1:53 PM            New.Directory

    Directory: Microsoft.Windows PowerShell.Core\FileSystem::C:\temp\New.Directory

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-18  11:44 AM          0 file1

Suppression d'éléments (Remove-Item)

Pour supprimer des fichiers et des dossiers, utilisez l'applet de commande Remove-Item. Certaines applets de commande Windows PowerShell, telles que Remove-Item, qui peuvent apporter des modifications importantes et irréversibles, vous demandent une confirmation lorsque vous entrez leurs commandes. Par exemple, si vous essayez de supprimer le dossier New.Directory, vous serez invité à confirmer la commande, car le dossier contient des fichiers :

PS> Remove-Item C:\New.Directory

Confirm
The item at C:\temp\New.Directory has children and the -recurse parameter was not
specified. If you continue, all children will be removed with the item. Are you
 sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

Oui étant la réponse par défaut, pour supprimer le dossier et ses fichiers, appuyez sur la touche Entrée. Pour supprimer le dossier sans confirmer, utilisez le paramètre -Recurse.

PS> Remove-Item C:\temp\New.Directory -Recurse

Exécution d'éléments (Invoke-Item)

Windows PowerShell utilise l'applet de commande Invoke-Item pour exécuter une action par défaut pour un fichier ou un dossier. Cette action par défaut est déterminée par le gestionnaire d'application par défaut du Registre ; l'effet est le même que si vous double-cliquez sur l'élément dans l'Explorateur Windows.

Par exemple, supposez que vous exécutez la commande suivante :

PS> Invoke-Item C:\WINDOWS

Une fenêtre de l'Explorateur ouverte sur C:\Windows s'affiche, exactement comme si vous aviez double-cliqué sur le dossier C:\Windows.

Si vous appelez le fichier Boot.ini sur un système antérieur à Windows Vista :

PS> Invoke-Item C:\boot.ini

Si le type de fichier .ini est associé au Bloc-notes, le fichier boot.ini s'ouvre dans le Bloc-notes.




Table des matières