PowerShell或中不支持SFTP。NET框架。因此,您必须使用外部SFTP库。
一种可能性(你在问题中标记了自己)是
WinSCP .NET assembly
using WinSCP from PowerShell
.
甚至还有一个
code example in PowerShell for SFTP download
:
try
{
Add-Type -Path "WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "example.com"
UserName = "user"
Password = "mypassword"
SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="
}
$session = New-Object WinSCP.Session
try
{
$session.Open($sessionOptions)
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$remotePath = "/home/user/*";
$localPath = "d:\download\*";
$transferResult =
$session.GetFiles($remotePath, $localPath, $False, $transferOptions)
$transferResult.Check()
foreach ($transfer in $transferResult.Transfers)
{
Write-Host "Download of $($transfer.FileName) succeeded"
}
}
finally
{
$session.Dispose()
}
exit 0
}
catch [Exception]
{
Write-Host "Error: $($_.Exception.Message)"
exit 1
}
WinSCP GUI甚至可以
generate a PowerShell SFTP download code
,如上图所示,对于您的特定会话设置和传输选项:
-
使用WinSCP GUI登录服务器;
-
在远程文件面板中选择要下载的文件;
-
-
调用
下载
(我是WinSCP的作者)