使用 PowerShell 将文件上传到 SFTP
Windows 和 Mac 用户发现可以通过命令行界面运行的工具非常有限。大多数基于 GUI 的应用程序为所有用户提供低脚本和自动化功能。
PowerShell 用于弥合 Windows 用户和类 Linux 系统用户之间的差距。PowerShell 为脚本编写、自动化需求、CI/CD 系统管理等提供了一个命令行界面。
PowerShell 是 Microsoft 的产品,它为 Windows 和 Mac 用户提供了满足其脚本要求的灵活性。但是,在使用 PowerShell 时,你应该熟悉一些脚本命令和 PowerShell 独有的命令。
什么是 SFTP
SFTP 是用户常用的一种协议,用于将文件从一台计算机/服务器传输到另一台计算机/服务器。它是通用 FTP 协议的安全版本,可确保发送方和接收方之间的端到端文件加密。
SFTP 代表安全文件传输协议,是计算中最常用的文件传输方法之一。
使用 PowerShell 将文件上传到 SFTP 站点
我们的要求是使用 PowerShell 将文件按计划上传到 SFTP 站点。PowerShell 让用户可以毫无问题地运行预定脚本。
这可以通过几个步骤来解释。
- 将安排一个文件从数据库上传到 SFTP 站点。
- 建立身份验证以访问该站点。
- Windows 任务计划程序触发脚本在特定时间运行。
- 任务调度程序会抓取所需的文件并将其上传到 FTP 站点。
使用 WinSCP
通过 PowerShell 将文件上传到 SFTP 站点
WinSCP
是最流行的 SFTP 客户端之一,也是 Microsoft Windows 的 FTP 客户端。此工具可以将文件从计算机复制到远程文件服务器。
为此要求,我们必须首先下载 WinSCP .NET
程序集。
然后必须使用脚本提取文件。然后我们将根据官方的 WinSCP
上传示例此处创建如下脚本。
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 xx...="
}
$session = New-Object WinSCP.Session
try
{
$session.Open($sessionOptions)
$session.PutFiles("C:\users\export.txt","/Outbox/").Check()
}
finally
{
$session.Dispose()
}
重要的是要记住所有这些都必须在 WinSCP
GUI 中完成,如下所示。
- 登录到
WinSCP
。 - 导航到远程位置的目标目录。
- 选择
上传命令
。 传输选项
>传输设置
>生成代码
>.NET 汇编代码
>PowerShell 语言
。
作为代码的输出,该文件将被上传到你指定的位置/站点,并最终清理以处理会话。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.