Monthly Archive 12 April 2024

ByPatrick

Script PowerShell pour la Migration et l’Archivage de Fichiers avec Robocopy et Gestion des Erreurs

Analyse du Script PowerShell pour la Gestion de Fichiers avec Robocopy et Contrôle d’Espace Disque

Ce script PowerShell est conçu pour gérer le transfert de fichiers entre différents emplacements réseau, en utilisant Robocopy pour les opérations de copie, et en vérifiant les permissions et l’espace disque disponible avant d’effectuer les opérations. Voici une analyse détaillée de chaque section du script :

Configuration des Variables

$sourceFolder = \\.be\DigiMobee\PRD
$destinationFolder = \\FILETRANSFER\Destination_BI
$archiveFolder = \\_FILETRANSFER\Archive
$tempFolder = \\_FILETRANSFER\Temp
$logFolderPath = \\_FILETRANSFER\Logs
  • Description : Cette section configure les chemins des dossiers source, de destination, d’archive, temporaire, et du dossier où seront stockés les logs.

Génération du Nom de Fichier de Log

$logFileName = "log_$(Get-Date -Format 'yyyyMMdd').txt"
$logPath = Join-Path -Path $logFolderPath -ChildPath $logFileName
  • Description : Ici, le script génère un nom de fichier pour le log en utilisant la date actuelle au format ‘yyyyMMdd’ et concatène ce nom avec le chemin du dossier de logs pour obtenir le chemin complet du fichier de log.

Fonction pour Vérifier l’Espace Disque

function Test-DiskSpace {
    param (
        [string]$folder,
        [string]$requiredSpaceGB,
        [string]$folderName
    )
    # ...
}
  • Description : Cette fonction, Test-DiskSpace, vérifie si l’espace disque disponible dans le dossier spécifié est suffisant par rapport à l’espace requis en Go. Si l’espace disque est insuffisant, une exception est levée.

Fonction pour Vérifier les Permissions du Dossier

function Test-FolderPermissions {
    param (
        [string]$folder,
        [string]$folderName,
        [System.Management.Automation.PSCredential]$credentials
    )
    # ...
}
  • Description : La fonction Test-FolderPermissions vérifie si le dossier spécifié existe et si les permissions sont suffisantes pour l’utilisateur connecté (ou les informations d’identification fournies). Si le dossier n’existe pas ou si les permissions ne sont pas suffisantes, une exception est levée.

Fonction pour Envoyer un Email d’Alerte

function Send-AlertEmail {
    param (
        [string]$errorMessage
    )
    # ...
}
  • Description : Cette fonction, Send-AlertEmail, est utilisée pour envoyer un email d’alerte avec un message d’erreur spécifié. Elle configure le corps de l’email avec le message d’erreur et utilise Send-MailMessage pour envoyer l’email via un serveur SMTP.

Fonction pour Effectuer une Opération Robocopy

function Invoke-Robocopy {
    param (
        [string]$source,
        [string]$destination,
        [string]$logFile
    )
    # ...
}
  • Description : La fonction Invoke-Robocopy est utilisée pour exécuter une commande Robocopy pour copier des fichiers du dossier source vers le dossier de destination. Elle configure les options de Robocopy et utilise Start-Process pour exécuter Robocopy. Si l’opération échoue, une exception est levée.

Bloc Try-Catch Principal

try {
    # ...
}
catch {
    $errorMessage = $_.Exception.Message
    Write-Host "Error occurred: $errorMessage"
}
  • Description : Le bloc try-catch principal contient les appels aux fonctions de vérification des permissions, de l’espace disque, et les appels à Invoke-Robocopy pour effectuer les opérations de copie. Il effectue également le nettoyage des dossiers temporaires et source. Si une exception est levée, le bloc catch attrape l’erreur et affiche le message d’erreur.

Points à Noter

  • Les appels aux fonctions Test-FolderPermissions et Test-DiskSpace sont commentés dans le script fourni. Ils devraient être décommentés et configurés avec les informations d’identification appropriées pour fonctionner correctement.
  • Les variables concernant les emails d’alerte (emailFrom, emailTo, emailSubject, emailSmtpServer, emailSmtpPort, emailSmtpUsername, emailSmtpPassword) ne sont pas définies dans le script fourni. Elles doivent être configurées pour que la fonction Send-AlertEmail fonctionne.
  • Le script utilise Remove-Item pour supprimer les fichiers des dossiers source et temporaire. Cela peut être dangereux si les chemins ne sont pas correctement configurés, car il supprime les fichiers sans demande de confirmation.

Ce script est un exemple de gestion avancée des fichiers sur un réseau, avec des contrôles d’espace disque, de permissions, et une gestion des erreurs via des emails d’alerte. Il peut servir de base pour des scénarios de transfert et d’archivage de fichiers plus complexes.