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
3
 
powershell -file C:\Users\administrateur\Documents\Sauvegarde_Serveur_Web.ps1
@pause


Merci d'avance, et bonne journée,
Axel.