如何使用PowerShell将本地文件传输至SFTP服务器
PowerShell 基于SFTP协议传输文件操作指南
前置依赖安装
你之前用到的非标准cmdlet无响应,绝大多数是因为没有安装官方推荐的SFTP操作模块,首先执行以下命令安装Posh-SSH模块:
Install-Module -Name Posh-SSH -Scope CurrentUser
弹出权限确认时选择「Y」即可完成安装。
完整文件上传流程
- 第一步:配置连接参数
# 替换为你自己的实际参数 $sftpHost = "远程服务器IP/域名" $sftpPort = 22 # 自定义SFTP端口可修改 $userName = "SFTP登录账号" $securePwd = ConvertTo-SecureString "SFTP登录密码" -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential ($userName, $securePwd)
- 第二步:建立SFTP会话
# AcceptKey参数用于自动信任远程服务端SSH公钥,避免首次连接弹窗拦截 $sftpSession = New-SFTPSession -ComputerName $sftpHost -Port $sftpPort -Credential $credential -AcceptKey
- 第三步:上传本地文件到远程路径
# 单文件上传 Set-SFTPItem -SessionId $sftpSession.SessionId -Path "C:\本地文件\完整路径\test.txt" -Destination "/远程服务器/目标存储路径/" # 批量上传整个本地文件夹添加 -Recurse 参数即可 Set-SFTPItem -SessionId $sftpSession.SessionId -Path "C:\本地文件夹路径\" -Destination "/远程服务器/目标存储路径/" -Recurse
- 第四步:操作完成后关闭会话
Remove-SFTPSession -SessionId $sftpSession.SessionId
常见失败排查点
- 执行安装模块命令失败的话,先右键以管理员身份运行PowerShell再重试
- 确认本地防火墙没有拦截22端口的出站请求
- 确认远程服务器的SFTP服务正常运行,且账号有目标路径的写入权限
内容的提问来源于stack exchange,提问作者David Sam
相关产品推荐
相关产品推荐

