使用 PowerShell 将文件上传到 SFTP

Migel Hewage Nimesha 2023年1月30日 2022年5月16日
  1. 什么是 SFTP
  2. 使用 PowerShell 将文件上传到 SFTP 站点
  3. 使用 WinSCP 通过 PowerShell 将文件上传到 SFTP 站点
使用 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 让用户可以毫无问题地运行预定脚本。

这可以通过几个步骤来解释。

  1. 将安排一个文件从数据库上传到 SFTP 站点。
  2. 建立身份验证以访问该站点。
  3. Windows 任务计划程序触发脚本在特定时间运行。
  4. 任务调度程序会抓取所需的文件并将其上传到 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 中完成,如下所示。

  1. 登录到 WinSCP
  2. 导航到远程位置的目标目录。
  3. 选择上传命令
  4. 传输选项 > 传输设置 > 生成代码 > .NET 汇编代码 > PowerShell 语言

作为代码的输出,该文件将被上传到你指定的位置/站点,并最终清理以处理会话。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.