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 utiliseSend-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 utiliseStart-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 bloccatch
attrape l’erreur et affiche le message d’erreur.
Points à Noter
- Les appels aux fonctions
Test-FolderPermissions
etTest-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 fonctionSend-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.