脚本自动化 - WinSCP 命令行与 .NET 程序集
WinSCP 不只是 GUI:WinSCP.com 命令行脚本与 WinSCPnet.dll .NET 程序集让它能嵌入任何自动化流程。
命令行脚本入门
# backup.txt:每天把服务器拉回本地
open sftp://backup-user@10.0.0.8/ -privatekey=mykey.ppk
lcd D:\backups
synchronize local -criteria=time /var/www D:\backups\www
call tar -czf /tmp/db.tgz /var/lib/mysql
get /tmp/db.tgz D:\backups\db\
rm /tmp/db.tgz
exit
# 计划任务执行(带日志)
WinSCP.com /ini=nul /script=backup.txt /log=backup-%YYYY-%MM-%DD.log
常用脚本命令
| 命令 | 作用 |
|---|---|
open | 建立会话,支持 URL 写法与密钥参数 |
get / put | 下载 / 上传,支持通配符与 -resume 断点 |
synchronize | 目录同步(见同步页) |
call / ls / rm / mv | 远程命令与文件操作 |
keepuptodate | 脚本版「保持远程目录最新」 |
.NET 程序集(PowerShell / C#)
# PowerShell 示例
Add-Type -Path "WinSCPnet.dll"
$o = New-Object WinSCP.SessionOptions
$o.Protocol = [WinSCP.Protocol]::SFTP
$o.HostName = "example.com"; $o.UserName = "user"
$o.SshHostKeyFingerprint = "ssh-ed25519 255 SHA256:xxxx"
$s = New-Object WinSCP.Session
$s.Open($o)
$s.PutFiles("D:\site\*", "/var/www/html/").Check()
严格指纹校验(SshHostKeyFingerprint)是脚本安全的关键,务必填写而非跳过。
进阶场景
- CI/CD:Jenkins / GitHub Actions 里调用脚本发布,无需装完整客户端;
- 静默安装:
WinSCP-6.7-Setup.exe /VERYSILENT /NORESTART配合组策略批量部署; - 失败处理:脚本退出码非 0 即失败,日志 + 计划任务重试构成兜底。
自动化从装好开始v6.7 免费获取 · 含 .NET 程序集与脚本接口
夸克网盘高速下载