使用 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.