Bonjour,
Je dois écrire un script qui récupère des fichier sur un site distant en SFTP et je dois stocker ces fichiers à un endroit avec dans le nom la date de la sauvegarde, cependant quand je lance mon script le nom s'affiche mais pas la date que j'ai rentrée préalablement dans une variables, mon résultat final est "sauvegarde_serveur_web_"
Voici mon code :
Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 # Importation du module WinSCPnet.dll pour l'utilisation des commandes de WinSCP Import-Module ".\WinSCPnet.dll" -Verbose Add-Type -path ".\WinSCPnet.dll" Add-Type -AssemblyName System.Windows.Forms # Déclaration des variables $path = "C:\Users\administrateur\Documents\sauvegarde_serveur_web_$date" $shortPath = "C:\Users\administrateur\Documents" $date = get-date -Format dd_MM_yy # Début de la condition de vérification de présence de dossier # Vérifie si le dossier n'existe pas if ($path -eq $false) { # Si il n'éxiste pas il le crée New-Item $path -ItemType Directory } # Fin de la condition de vérification de présence de dossier # Début de la condition de vérification de la date de création if ( Get-ChildItem $shortPath | Where name -like "sauvegarde_serveur_web_$date" | where LastWriteTime -lt (Get-Date).AddDays(-1) ) { # Si le dossier a été écrit pour la dernière fois il y a plus de 30 jours alors il sera supprimé Remove-Item $path -Force -Recurse } # Fin de la condition de vérification de la date de création # Déclaration de la variable d'ouverture de session $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ Protocol = [WinSCP.Protocol]::Sftp HostName = UserName = Password = SshHostKeyFingerprint = } $session = New-Object WinSCP.Session $session.ExecutablePath = ".\WinSCP.exe" try { # Ouverture de session $session.Open($sessionOptions) # Récupération des fichiers $session.GetFiles("/lamp0/web/vhosts", $path).Check() } finally { # Fermeture de la session [System.Windows.Forms.MessageBox]::Show("La sauvegarde des sites web est terminée", "Sauvegarde" , 0, 64) $session.Dispose() }
Les lignes 28 à 51 permettent d'ouvrir une connexion et de récupérer des fichiers SFTP grâce à WinSCP
Et voici le code batch du .bat qui lance mon script si jamais
Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3powershell -file C:\Users\administrateur\Documents\Sauvegarde_Serveur_Web.ps1 @pause
Merci d'avance, et bonne journée,
Axel.
Partager