Résolu Upload fichiers en SFTP

Plus d'informations
il y a 2 ans 3 mois #33722 par Dead
Upload fichiers en SFTP a été créé par Dead
Bonjour à tous, 

Je suis un peu perdu car je n'ai jamais envoyé de fichiers en tâches planifiées avec un script PowerShell. 
Je ne sais pas si avec WinSCP on peut faire cela, mais j'ai commencé à faire ce bout de script, qui ne fonctionne pas. 

Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
# Déclaration des variables
$WinSCPSessionOption = New-Object WinSCP.SessionOptions
$WinSCPSessionOption.Protocol = [WinSCP.Protocol]::Sftp
$WinSCPSessionOption.HostName = "serveur_distant"
$WinSCPSessionOption.PortNumber = 22
$WinSCPSessionOption.UserName = "username"
$WinSCPSessionOption.Password = "password"
$LocalPath = "E:\dossier"
$RemotePath = "/"  

# Connexion WinSCP
$WinSCPSession = New-Object WinSCP.Session
$WinSCPSession.SessionLogPath = "C:\WinSCP.log"
$WinSCPSession.ExecutablePath = C:\Program Files (x86)\WinSCP\
$WinSCPSession.Open($WinSCPSessionOption)

# Transfert de fichiers
try {
    $transferOptions = New-Object WinSCP.TransferOptions
    $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary

    $transferResult = $WinSCPSession.PutFiles($LocalPath, $RemotePath, $False, $transferOptions)

    if ($transferResult.IsSuccess) {
        Write-Host "Transfert de fichiers réussi!"
    } else {
        Write-Host "Échec du transfert de fichiers. Erreur : $($transferResult.Failures[0].Message)"
    }
} finally {
    # Ferme la session WinSCP après le transfert
    if ($WinSCPSession.SessionOpen) {
        $WinSCPSession.Dispose()
        Write-Host "Session WinSCP fermée."
    }
}


Ce script ne fonctionne pas. Une erreur indique que l'exe de WinSCP est introuvable, alors qu'il est bien dans le chemin décrit.
J'ignore si l'un d'entre vous a déjà fait cela, mais je suis preneur de toute aide.

Je vous remercie

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 3 mois #33724 par Dead
Réponse de Dead sur le sujet Upload fichiers en SFTP
Re bonjour à tous, finalement, en me positionnant dans des posts déjà présents sur le forum, je suis parti sur Posh-SSH.

Voici le début du script:

Import-Module Posh-SSH
$Password = ConvertTo-SecureString 'password' -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ('username', $Password)
$FilePath = "C:\Dossier"
$SftpPath = "racine du serveur distant"
$SftpIp = "sitedistant"
New-SFTPSession -ComputerName $SftpIp -Credential $Credential -Port 22

La connexion se fait bien, c'est parfait.
Maintenant je ne sais pas comment envoyer les fichiers depuis C:\Dossier vers racine du serveur distant.

Une idée? Merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 3 mois #33733 par Dead
Réponse de Dead sur le sujet Upload fichiers en SFTP
Bonjour,

Une idée?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 3 mois #33735 par Dead
Réponse de Dead sur le sujet Upload fichiers en SFTP
Bonjour,

J'ai fait cela:

Import-Module Posh-SSH

#Déclaration des variables:

$Password = ConvertTo-SecureString 'password' -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ('sahlmles', $Password)
$FilePath = "E:\DIR\"
$SftpPath = "/home/user/"
$SftpIp = "IP_Serveur_SFTP"

#Ouverture session et envoi fichiers:

New-SFTPSession -ComputerName $SftpIp -Credential $Credential -Port 22
Get-SCPItem -SessionId $Session.SessionId -RemoteFile "$SftpPath*" -LocalPath $LocalPath

Remove-SFTPSession -SessionId $Session.SessionId


Seulement, cela ne fonctionne toujours pas. J'ai l'erreur suivante:
Get-SCPItem : Impossible de trouver un paramètre correspondant au nom « SessionId ».
Au caractère Ligne:1 : 13
+ Get-SCPItem -SessionId $Session.SessionId -RemoteFile "$SftpPath*" -L ...
+ ~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (:) [Get-SCPItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,SSH.GetScpItem

Merci pour votre aide

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 3 mois #33737 par Fabien
Réponse de Fabien sur le sujet Upload fichiers en SFTP
Bonjour Dead,

Je n'ai jamais utilisé la commande Get-SCPItem, mais le retour d'erreur t'indique que la paramètre SessionId n'existe pas dans la commande Get-SCPItem.
Dans l'aide de cette commande, il y a des exemples comme ceci  :
-------------------------- Example 1 --------------------------
    
    PS C:\> Get-SCPItem -ComputerName 192.168.1.169 -Credential carlos -Path "/var/log/dmesg" -PathType File -Destination ./
    
    Download in to the local path the dmesg file.
    -------------------------- Example 2 --------------------------
    
    PS C:\> Get-SCPItem -ComputerName 192.168.1.169 -Credential carlos -Path "/var/log/dmesg" -PathType File -Destination ./ -NewName dmesg_server_169
    
    Download in to the local path the dmesg file and give it a different name.

Je pense que la commande New-SFTPSession n'est pas nécessaire pour le traitement.
Je n'ai pas de serveur sftp sous la main pour tester.
Essaye juste avec la commande Get-SCPItem.

Fabien

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 3 mois #33738 par Dead
Réponse de Dead sur le sujet Upload fichiers en SFTP
Bonjour Fabien, merci pour votre retour.
J'ai testé, cela ne fonctionne pas..

En gros, je souhaiterais copier tout le contenu de C:\Dossier vers la racine du serveur SFPT distant.
Avec Get-SCPitem je ne trouve pas la manip :/

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.054 secondes
Propulsé par Kunena