Automatiser la gestion de fichiers avec PowerShell

PowerShell est un outil puissant pour l’automatisation de la gestion des fichiers sous Windows. Il permet de créer des scripts pour gérer, déplacer, renommer, supprimer et automatiser des tâches liées aux fichiers et répertoires. Dans ce guide, nous allons explorer plusieurs exemples d’automatisation des tâches courantes de gestion de fichiers à l’aide de PowerShell.

1. Créer un fichier et y écrire du contenu

Vous pouvez créer un fichier texte et y ajouter du contenu avec des commandes PowerShell simples.

Exemple : Créer un fichier et écrire du texte dedans

powershellCopierModifier# Définir le chemin du fichier
$filePath = "C:\Temp\example.txt"

# Vérifier si le fichier existe déjà
if (-Not (Test-Path $filePath)) {
    # Créer le fichier et y écrire du texte
    "Ceci est un exemple de texte" | Out-File $filePath
    Write-Host "Le fichier a été créé et du texte y a été écrit."
} else {
    Write-Host "Le fichier existe déjà."
}

Explication :

  • Test-Path : Vérifie si le fichier existe déjà.
  • Out-File : Crée le fichier et y écrit le texte fourni.

2. Lire le contenu d’un fichier

Une fois qu’un fichier est créé, vous pouvez le lire et afficher son contenu.

Exemple : Lire un fichier texte

powershellCopierModifier# Définir le chemin du fichier
$filePath = "C:\Temp\example.txt"

# Vérifier si le fichier existe
if (Test-Path $filePath) {
    # Lire le contenu du fichier
    $content = Get-Content $filePath
    Write-Host "Le contenu du fichier est :"
    Write-Host $content
} else {
    Write-Host "Le fichier n'existe pas."
}

Explication :

  • Get-Content : Lit le contenu du fichier spécifié.

3. Copier des fichiers

Vous pouvez facilement copier des fichiers d’un répertoire à un autre avec PowerShell.

Exemple : Copier un fichier

powershellCopierModifier# Définir les chemins source et destination
$sourceFile = "C:\Temp\example.txt"
$destinationDir = "C:\Temp\Backup"

# Vérifier si le fichier source existe
if (Test-Path $sourceFile) {
    # Vérifier si le répertoire de destination existe, sinon le créer
    if (-Not (Test-Path $destinationDir)) {
        New-Item -ItemType Directory -Path $destinationDir
    }

    # Copier le fichier
    Copy-Item $sourceFile -Destination $destinationDir
    Write-Host "Le fichier a été copié dans $destinationDir."
} else {
    Write-Host "Le fichier source n'existe pas."
}

Explication :

  • Copy-Item : Copie le fichier source vers le répertoire de destination.
  • New-Item : Crée un répertoire si le répertoire de destination n’existe pas.

4. Déplacer des fichiers

De la même manière que pour la copie, PowerShell permet de déplacer des fichiers.

Exemple : Déplacer un fichier

powershellCopierModifier# Définir les chemins source et destination
$sourceFile = "C:\Temp\example.txt"
$destinationDir = "C:\Temp\Archive"

# Vérifier si le fichier source existe
if (Test-Path $sourceFile) {
    # Vérifier si le répertoire de destination existe, sinon le créer
    if (-Not (Test-Path $destinationDir)) {
        New-Item -ItemType Directory -Path $destinationDir
    }

    # Déplacer le fichier
    Move-Item $sourceFile -Destination $destinationDir
    Write-Host "Le fichier a été déplacé dans $destinationDir."
} else {
    Write-Host "Le fichier source n'existe pas."
}

Explication :

  • Move-Item : Déplace le fichier du chemin source vers la destination spécifiée.

5. Renommer des fichiers

Le renommage de fichiers peut être effectué avec la commande Rename-Item.

Exemple : Renommer un fichier

powershellCopierModifier# Définir le chemin du fichier et le nouveau nom
$oldFileName = "C:\Temp\example.txt"
$newFileName = "C:\Temp\renamed_example.txt"

# Vérifier si le fichier existe
if (Test-Path $oldFileName) {
    # Renommer le fichier
    Rename-Item $oldFileName -NewName $newFileName
    Write-Host "Le fichier a été renommé en $newFileName."
} else {
    Write-Host "Le fichier n'existe pas."
}

Explication :

  • Rename-Item : Renomme le fichier ou le répertoire spécifié par le chemin original en lui attribuant un nouveau nom.

6. Supprimer des fichiers

PowerShell permet également de supprimer des fichiers, que ce soit individuellement ou en masse.

Exemple : Supprimer un fichier

powershellCopierModifier# Définir le chemin du fichier à supprimer
$filePath = "C:\Temp\example.txt"

# Vérifier si le fichier existe
if (Test-Path $filePath) {
    # Supprimer le fichier
    Remove-Item $filePath
    Write-Host "Le fichier a été supprimé."
} else {
    Write-Host "Le fichier n'existe pas."
}

Explication :

  • Remove-Item : Supprime le fichier spécifié.

7. Lister les fichiers dans un répertoire

Vous pouvez lister tous les fichiers d’un répertoire spécifique avec PowerShell.

Exemple : Lister les fichiers dans un répertoire

powershellCopierModifier# Définir le répertoire à lister
$directory = "C:\Temp"

# Vérifier si le répertoire existe
if (Test-Path $directory) {
    # Lister les fichiers dans le répertoire
    $files = Get-ChildItem -Path $directory
    Write-Host "Fichiers dans $directory :"
    $files | ForEach-Object { Write-Host $_.Name }
} else {
    Write-Host "Le répertoire n'existe pas."
}

Explication :

  • Get-ChildItem : Liste les fichiers et répertoires d’un répertoire spécifié.

8. Automatiser la gestion des fichiers avec des planifications

Vous pouvez automatiser l’exécution de vos scripts PowerShell pour gérer des fichiers à des moments précis grâce à l’outil Task Scheduler (Planificateur de tâches) sous Windows.

Voici les étapes de base pour planifier un script PowerShell :

  1. Ouvrez Task Scheduler (Planificateur de tâches).
  2. Créez une nouvelle tâche.
  3. Dans l’onglet Action, choisissez Start a program et spécifiez le chemin de PowerShell (powershell.exe).
  4. Dans le champ Add arguments, entrez le chemin de votre script PowerShell (par exemple, -File "C:\Scripts\automatisation.ps1").
  5. Définissez un déclencheur pour exécuter votre script à une heure donnée ou selon un intervalle récurrent.

9. Automatiser des tâches de nettoyage

Un autre cas pratique courant est de nettoyer un répertoire en supprimant les anciens fichiers ou les fichiers temporaires.

Exemple : Supprimer les fichiers plus vieux que 30 jours

powershellCopierModifier# Définir le répertoire
$directory = "C:\Temp"

# Récupérer les fichiers plus vieux que 30 jours
$filesToDelete = Get-ChildItem -Path $directory | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }

# Supprimer les fichiers
foreach ($file in $filesToDelete) {
    Remove-Item $file.FullName
    Write-Host "Le fichier $($file.Name) a été supprimé."
}

Explication :

  • Where-Object : Filtre les fichiers selon leur date de dernière modification.
  • AddDays(-30) : Sélectionne les fichiers modifiés il y a plus de 30 jours.

Conclusion

PowerShell est un outil puissant pour automatiser la gestion des fichiers sous Windows. Grâce aux commandes comme Get-Content, Copy-Item, Move-Item, Rename-Item, et Remove-Item, vous pouvez automatiser une grande variété de tâches de gestion des fichiers. En ajoutant des fonctionnalités de planification avec le Task Scheduler, vous pouvez également exécuter ces scripts de manière régulière sans intervention manuelle.

carle
carle