La commande Get-ChildItem
est un outil puissant pour lister et gérer les fichiers et répertoires dans les systèmes Windows via PowerShell. Elle permet de rechercher des fichiers et répertoires en fonction de divers critères tels que le nom, la date de modification, la taille, et bien plus encore. Cet article vous guidera à travers ses diverses options et comment l’utiliser dans vos scripts.
Utilisation de Base de Get-ChildItem
Pour commencer, la commande de base Get-ChildItem
s’utilise simplement en tapant :
Cela affichera tous les fichiers et répertoires sous le répertoire spécifié.
Exemple :
Get-ChildItem -Path C:\chemin\vers\repertoire
Exemple de sortie :
Répertoire : C:\chemin\vers\repertoire
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 01/01/2023 12:00 dossier1
d----- 01/01/2023 12:00 dossier2
-a---- 01/01/2023 12:00 1234 fichier1.txt
-a---- 01/01/2023 12:00 5678 fichier2.log
Options Courantes de Get-ChildItem
Voici quelques-unes des options les plus couramment utilisées :
-Recurse
: Recherche récursive dans les répertoires.
Get-ChildItem -Path C:\chemin\vers\repertoire -Recurse
Exemple :
Répertoire : C:\chemin\vers\repertoire\dossier1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 01/01/2023 12:00 1234 fichier3.txt
Répertoire : C:\chemin\vers\repertoire\dossier2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 01/01/2023 12:00 5678 fichier4.log
-Filter
: Filtre les fichiers en fonction d’un motif de recherche.
Get-ChildItem -Path C:\chemin\vers\repertoire -Filter *.txt
Exemple :
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 01/01/2023 12:00 1234 fichier1.txt
-File
: Affiche uniquement les fichiers.
Get-ChildItem -Path C:\chemin\vers\repertoire -File
Exemple :
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 01/01/2023 12:00 1234 fichier1.txt
-a---- 01/01/2023 12:00 5678 fichier2.log
-Directory
: Affiche uniquement les répertoires.
Get-ChildItem -Path C:\chemin\vers\repertoire -Directory
Exemple :
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 01/01/2023 12:00 dossier1
d----- 01/01/2023 12:00 dossier2
-Hidden
: Affiche également les fichiers et répertoires cachés.
Get-ChildItem -Path C:\chemin\vers\repertoire -Hidden
Exemple :
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a-h-- 01/01/2023 12:00 1234 fichier_cache.txt
Utilisation de Get-ChildItem
dans les Scripts
La commande Get-ChildItem
est également très utile dans les scripts PowerShell pour automatiser des tâches. Voici un exemple simple de script utilisant Get-ChildItem
:
# Lister tous les fichiers dans un répertoire spécifique
Write-Output "Liste des fichiers dans C:\chemin\vers\repertoire :"
Get-ChildItem -Path C:\chemin\vers\repertoire
# Lister tous les fichiers .txt dans un répertoire spécifique
Write-Output "Liste des fichiers .txt dans C:\chemin\vers\repertoire :"
Get-ChildItem -Path C:\chemin\vers\repertoire -Filter *.txt
Exemple Pratique
Supposons que vous souhaitiez trouver tous les fichiers modifiés au cours des 7 derniers jours et les copier dans un répertoire de sauvegarde. Voici un script qui utilise Get-ChildItem
pour accomplir cela :
# Répertoire de source
$sourceDir = "C:\chemin\vers\repertoire"
# Répertoire de destination
$backupDir = "C:\chemin\vers\sauvegarde"
# Créer le répertoire de sauvegarde s'il n'existe pas
if (-Not (Test-Path -Path $backupDir)) {
New-Item -ItemType Directory -Path $backupDir
}
# Trouver et copier les fichiers modifiés au cours des 7 derniers jours
Write-Output "Copie des fichiers modifiés au cours des 7 derniers jours :"
$files = Get-ChildItem -Path $sourceDir -Recurse | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }
foreach ($file in $files) {
$dest = $backupDir + $file.FullName.Substring($sourceDir.Length)
$destDir = Split-Path -Parent $dest
if (-Not (Test-Path -Path $destDir)) {
New-Item -ItemType Directory -Path $destDir
}
Copy-Item -Path $file.FullName -Destination $dest
Write-Output "Copié : $($file.FullName) -> $($dest)"
}
Explication :
Get-ChildItem -Path $sourceDir -Recurse
: Recherche récursive des fichiers dans le répertoire source.Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) }
: Filtre les fichiers modifiés au cours des 7 derniers jours.Copy-Item -Path $file.FullName -Destination $dest
: Copie chaque fichier filtré vers le répertoire de sauvegarde.
Conclusion
La commande Get-ChildItem
est un outil puissant pour lister et gérer les fichiers et répertoires sous PowerShell. En combinant ses différentes options et en l’intégrant dans des scripts, vous pouvez automatiser efficacement vos tâches de gestion des fichiers. Essayez ces commandes et scripts pour mieux maîtriser votre environnement de travail ! 🚀