Ce script PowerShell est conçu pour transférer des fichiers depuis un serveur SFTP vers un emplacement local, et pour envoyer des emails de notification. Voici une analyse détaillée de chaque section du script :
Synopsis et Description
.SYNOPSIS
FTP transfer scripts
.DESCRIPTION
Script that will get the Files FICH1, FICH2, FICH3.txt from and send the file
- Description : Cette section fournit un bref résumé et une description du script. Elle indique que le script est utilisé pour transférer des fichiers depuis un serveur Ethias et pour envoyer un fichier spécifique.
Notes et Informations
.NOTES
Author :
.INFO'S & REQ'S
X: drive must be mounted as net use \\fs-\PUBLIC /user:
- Description : Cette partie contient des informations sur l’auteur du script, le point de contact, et les prérequis, notamment le montage du lecteur X: via une commande
net use
.
Configuration des Variables
$LogFilePath="e:\logs\log.txt";
$ServerName="";
$FileServerName="";
$username="";
$SMTPServerName="smtp.";
$remotePath = "/*"
$localPath = "D:\Folder\"
$WinScpDllPath="e:\scripts\\WinSCPnet.dll"
$proxy=""
$SshHostKeyFingerprint="ssh-rsa 2048 " # PROD
- Description : Ici, le script configure diverses variables, telles que le chemin du fichier de log, le nom du serveur SFTP, le nom du serveur de fichiers, le nom d’utilisateur, le nom du serveur SMTP, le chemin distant, le chemin local, le chemin de la DLL WinSCP, le serveur proxy, et l’empreinte de la clé SSH.
Fonction de Logging
function log ([string] $message ){
$a = Get-Date
$message1= $a.ToString() + " " + $message
out-file -FilePath $LogFilePath -InputObject $message1 -Append
}
- Description : La fonction
log
est utilisée pour écrire des messages de log dans le fichier de log configuré, en ajoutant la date et l’heure à chaque message.
Bloc Try-Catch Principal
try{
# ...
}
catch [Exception] {
# ...
}
finally {
# ...
}
- Description : Le bloc
try-catch-finally
encapsule l’exécution du script principal. Il tente d’exécuter le script, attrape les exceptions si elles se produisent, et exécute le blocfinally
à la fin, quelle que soit l’issue.
Vérification des Prérequis et Exécution du Script
log("debug du script");
# ...
if ($checklistOk){
# ...
}
else {
log("Erreur lors de la checklist")
exit 2
}
- Description : Cette section débute par écrire un message de debug dans le fichier de log, puis vérifie si le dossier local existe et met à jour la variable
$checklistOk
en conséquence. Si tout est OK, le script continue. Sinon, il écrit un message d’erreur et quitte avec le code 2.
Configuration et Utilisation de WinSCP pour le Transfert de Fichiers
Add-Type -Path $WinScpDllPath
$sessionOptions = New-Object WinSCP.SessionOptions
# ...
$session = New-Object WinSCP.Session
# ...
$session.Open($sessionOptions)
# ...
$session.GetFiles($remotePath, $localPath).Check()
# ...
$session.Dispose()
- Description : Cette partie du script configure les options de session WinSCP, ouvre une session, récupère la liste des fichiers distants, télécharge les fichiers, et ferme la session.
Envoi d’Emails de Notification
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($SMTPServerName)
# ...
$smtp.Send($msg)
# ...
- Description : Le script configure un objet
MailMessage
avec les destinataires, le sujet, et le corps du message, puis utilise un objetSmtpClient
pour envoyer l’email via le serveur SMTP configuré.
Points à Noter
- Le script contient des commentaires
TODO
qui indiquent des tâches ou des vérifications qui devraient être implémentées, comme vérifier la taille des logs ou vérifier si le dossier de destination existe. - Les valeurs de certaines variables sont vides (
$ServerName
,$FileServerName
,$username
, etc.) et devraient être remplies avec les informations appropriées pour que le script fonctionne. - L’envoi d’email est commenté dans le bloc
catch
pour éviter l’envoi d’emails intempestifs pendant le développement ou le débogage.
Ce script est un exemple de gestion de transfert de fichiers SFTP et d’envoi d’emails de notification, avec une gestion des exceptions et un système de logging intégré.