Télécharger le fichier sur SFTP à l'aide de PowerShell

Upload File Sftp Using Powershell



Solution:

Vous ne nous avez pas dit quel problème particulier rencontrez-vous avec WinSCP, donc je ne peux vraiment que répéter ce qui est dans la documentation de WinSCP.

  • Téléchargez l'assemblage WinSCP .NET.
    Le dernier paquet à partir de maintenant estWinSCP-5.17.10-Automation.zip ;



  • Extraire learchive .zip avec votre script ;



  • Utilisez un code comme celui-ci (basé sur l'exemple de téléchargement officiel de PowerShell) :



    # Charger l'assembly WinSCP .NET Add-Type -Path 'WinSCPnet.dll' # Configurer les options de session $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ Protocol = [WinSCP.Protocol]::Sftp HostName = 'example.com' UserName = 'user' Password = 'mypassword' SshHostKeyFingerprint = 'ssh-rsa 2048 xxxxxxxxxxx...=' } $session = Nouvel objet WinSCP.Session try { # Connect $session.Open($sessionOptions) # Upload $session. PutFiles('C:FileDumpexport.txt', '/Outbox/').Check() } enfin { # Déconnectez, nettoyez $session.Dispose() }

Vous pouvez demander à WinSCP de générer le script PowerShell pour le téléchargement pour vous :

  • Connectez-vous à votre serveur avec l'interface graphique WinSCP ;
  • Accédez au répertoire cible dans le panneau de fichiers distants ;
  • Sélectionnez le fichier à télécharger dans le panneau des fichiers locaux ;
  • Invoquer le Télécharger commander;
  • Dans la boîte de dialogue Options de transfert, accédez à Paramètres de transfert > Générer le code ;
  • Dans la boîte de dialogue Générer le code de transfert, sélectionnez le Code d'assemblage .NET languette;
  • Choisir PowerShell Langue.

Vous obtiendrez un code comme ci-dessus avec tous les paramètres de session et de transfert renseignés.

Boîte de dialogue Générer le code de transfert



(Je suis l'auteur de WinSCP)


Il n'existe actuellement pas de méthode PowerShell intégrée pour effectuer la partie SFTP. Vous devrez utiliser quelque chose comme psftp.exe ou un module PowerShell comme Posh-SSH.

Voici un exemple utilisant Posh-SSH :

# Définir les informations d'identification $Password = ConvertTo-SecureString 'Password1' -AsPlainText -Force $Credential = New-Object System.Management.Automation.PSCredential ('root', $Password) # Définir le chemin du fichier local, le chemin SFTP et la sauvegarde chemin d'emplacement qui, je suppose, est un chemin SMB $FilePath = 'C:FileDump	est.txt' $SftpPath = '/Outbox' $SmbPath = '\filer01Backup' # Définir l'adresse IP du serveur SFTP $SftpIp = '10.209.26.105' # Charger le module Posh-SSH Import-Module C:TempPosh-SSH # Établir la connexion SFTP $ThisSession = New-SFTPSession -ComputerName $SftpIp -Credential $Credential # Télécharger le fichier sur le chemin SFTP Set-SFTPFile -SessionId ($ThisSession).SessionId -LocalFile $FilePath -RemotePath $SftpPath #Déconnecter toutes les sessions SFTP Get-SFTPSession | % { Remove-SFTPSession -SessionId ($_.SessionId) } # Copiez le fichier dans l'emplacement SMB Copy-Item -Path $FilePath -Destination $SmbPath

Quelques remarques supplémentaires :

  • Vous devrez télécharger le module Posh-SSH que vous pouvez installer dans le répertoire de votre module utilisateur (par exemple C:Usersjon_dechiroDocumentsWindowsPowerShellModules) et simplement charger en utilisant le nom ou le mettre n'importe où et le charger comme je avoir dans le code ci-dessus.
  • Si le fait d'avoir les informations d'identification dans le script n'est pas acceptable, vous devrez utiliser un fichier d'informations d'identification. Si vous avez besoin d'aide, je peux mettre à jour avec quelques détails ou vous diriger vers des liens.
  • Modifiez les chemins, les adresses IP, etc. selon vos besoins.

Cela devrait vous donner un bon point de départ.


En utilisant pscp.exe de PuTTY (que j'ai dans un$env:chemin répertoire) :

pscp -sftp -pw passwd c:filedump* [email protected] :/Outbox/ mv c:filedump* c:ackup*