使用 PowerShell 通过 SFTP 管理文件

Discuss smarter ways to manage and optimize cv data.
Post Reply
roseline371274
Posts: 1265
Joined: Mon Dec 23, 2024 8:19 am

使用 PowerShell 通过 SFTP 管理文件

Post by roseline371274 »

PowerShell 不提供对安全文件传输协议 (SFTP) 的本机支持。
虽然 PowerShell 并不原生支持安全文件传输协议 (SFTP),但通过使用免费模块,我们可以检索、删除和添加新文件。

我们需要使用的模块名为 Posh-SSH。此模块可在 PowerShell 库中找到,可通过运行 Install-Module -Name Posh-SSH 进行安装。安装后,我们可以查看它现在提供的所有可用命令:


看起来,这个模块可以做很多事情。让我们 塞浦路斯whatsapp 数据 深入研究一些 SFTP 命令,看看如何使用它们。

模型选项
要通过 SFTP 传输文件,我们需要与 SFTP 服务器建立会话。我们只需执行一次此操作。每次需要通过 SFTP 执行某些任务时,我们都可以创建一个单独的会话,但这样效率不太高。

相反,让我们使用 New-SFTPSession 命令创建一个 SFTP 会话。我们将采取简单的方法,不处理证书,这样我们就可以使用用户名和密码来向 SFTP 服务器进行身份验证。New-SFTPSession 有一个 Credential 参数,它接受 PSCredential 对象。我们将使用 Get-Credential 命令提示用户输入用户名和密码。

$credential = 获取凭证

一旦我们获取了用户名和密码,我们就可以将其连同 AcceptKey 参数一起传递给 New-SFTPSession 命令。AcceptKey 参数将自动接受从 SFTP 服务器返回的密钥,而不是提示您这样做。

$session = New-SFTPSession -ComputerName 'MYSFTPSERVER' -Credential $Credential -AcceptKey

如果一切顺利,您将返回到控制台。如果是这样,我们现在可以使用此会话执行一些命令。例如,如果我需要将文件从 SFTP 服务器下载到本地计算机,我可以使用 Get-SFTPFile 函数。

$getParams = @{
    SessionId = $session.SessionId
    LocalPath = 'C:\localfile.txt'
   RemoteFile = 'C:\localfile.txt'
}
Get-SFTPFile @getParams

也许我们需要删除 SFTP 服务器上的一个文件。我们可以使用 Remove-SFTPItem 函数来实现这一点,就像使用 Get-SFTPFile 函数一样简单。

获取 SFTPFile -SessionId $session.SessionId -Path ‘C:\localfile.txt’

一旦我们在 SFTP 服务器上完成了我们需要做的一切,我们就应该断开连接并删除会话。我们可以调用 Remove-SFTPSession 并提供会话,但最好提前检查一下,以确保会话仍然存在。我们可以使用 Get-SFTPSession 检查会话是否仍在创建。

概括
您可以在下面看到,我首先检查我们的会话是否存在。如果存在,我将断开连接并将其从我们的会话中完全删除。
Post Reply