我们被要求设置从我们的一台服务器到 SFTP 站点的自动上传。每个星期一早上都会有一个文件从数据库导出到文件管理器,他们希望在星期二将该文件上传到 SFTP。我们当前使用的身份验证方法是用户名和密码(我相信也可以选择拥有密钥文件,但选择了用户名/密码选项)。
我设想的方式是在服务器上放置一个脚本,该脚本将由 Windows 任务计划程序触发,在特定时间(星期二)运行,该脚本将抓取有问题的文件,将其上传到 SFTP,然后将其移动到用于备份目的的不同位置。
例如:
本地目录:C:\FileDump
SFTP 目录:/Outbox/
备份目录:C:\Backup
此时我尝试了一些东西 WinSCP 就是其中之一SFTP PowerShell 管理单元 http://www.k-tools.nl/index.php/download-sftp-powershell-snap-in/但到目前为止,没有什么对我有用。
这将在 Windows Server 2012R2 上运行。
当我跑步时Get-Host
我的控制台主机版本是4.0。
Thanks.
您没有告诉我们 WinSCP 有什么具体问题,所以我只能重复 WinSCP 文档中的内容。
-
下载 WinSCP .NET 程序集 https://winscp.net/eng/download.php.
目前最新的包是WinSCP-6.1.2-Automation.zip
;
-
Extract https://winscp.net/eng/docs/library_install the .zip
沿着你的脚本存档;
-
使用这样的代码(基于官方PowerShell 上传示例 https://winscp.net/eng/docs/library_powershell#example):
# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"
# Setup session options
$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
{
# Connect
$session.Open($sessionOptions)
# Upload
$session.PutFiles("C:\FileDump\export.txt", "/Outbox/").Check()
}
finally
{
# Disconnect, clean up
$session.Dispose()
}
您可以让 WinSCP 为您生成用于上传的 PowerShell 脚本:
- 使用 WinSCP GUI 登录到您的服务器;
- 导航到远程文件面板中的目标目录;
- 在本地文件面板中选择要上传的文件;
- 调用Upload命令;
- On the 传输选项对话框 https://winscp.net/eng/docs/ui_copy, go to 传输设置 > 生成代码;
- 在生成传输代码对话框中,选择.NET 汇编代码 tab https://winscp.net/eng/docs/ui_generateurl#code;
- Choose 电源外壳语言。
您将获得与上面类似的代码,其中填写了所有会话和传输设置。
(我是WinSCP的作者)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)