【问题标题】:Automate SSL FTP upload via PowerShell通过 PowerShell 自动上传 SSL FTP
【发布时间】:2012-08-06 20:19:35
【问题描述】:

我已经搜索并阅读了很多关于在 PowerShell 中下载 SSL FTP 文件的信息……但是如何上传它们呢?我有一个需要每天上传的文件名,但我收到了我未登录的错误。 我目前正在像这样上传到其他 FTP 站点:

$Filename = "myfile.txt"
$FullPath = "\\server\share\$Filename"
$ftp = "ftp://user:pass@ftp.domain.com/$Filename"
$ftpWebClient = New-Object System.Net.WebClient
$ULuri= New-Object System.URI($ftp)
$ftpWebClient.UploadFile($ULuri, $FullPath)

我是否需要为 SSL FTP 上传创建一个全新的代码块,还是只需要对该代码进行细微调整?

谢谢!

【问题讨论】:

    标签: powershell ssl webclient ftpwebrequest


    【解决方案1】:

    我使用 WinSCP DLL 来做这些事情。在此处查看一些示例: http://winscp.net/eng/docs/library#powershell

    这是我的一些示例代码。

    [Reflection.Assembly]::LoadFrom("D:\WinSCP.dll") | Out-Null
    $sessionOptions = New-Object WinSCP.SessionOptions
    $sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
    $sessionOptions.HostName = "192.168.1.120"
    $sessionOptions.UserName = "user"
    $sessionOptions.Password = "pass"
    $session = New-Object WinSCP.Session
    $session.Open($sessionOptions)
    
    #upload stuff here, check the link for detail on how, and use powershell to populate your file list!
    
    $session.Dispose()
    

    【讨论】:

    • SFTP 不是基于 TLS/SSL 的 FTP。对于 TLS/SSL 上的 FTP,请使用 $sessionOptions.Protocol = [WinSCP.Protocol]::Ftp$sessionOptions.FtpSecure = [WinSCP.FtpSecure]::Explicit
    【解决方案2】:

    由于您已经在脚本中使用 .NET 框架中的 WebClient 类,我建议您通过在 PowerShell 中嵌入 C# 代码,从支持 FTP over TLS 的 WebClient 创建一个派生版本:

    $typeDefinition = @"
    using System;
    using System.Net;
    public class FtpClient : WebClient
    {
        protected override WebRequest GetWebRequest(Uri address)
        {
            FtpWebRequest ftpWebRequest = base.GetWebRequest(address) as FtpWebRequest;
            ftpWebRequest.EnableSsl = true;
            return ftpWebRequest;
        }
    }
    "@
    
    Add-Type -TypeDefinition $typeDefinition
    $ftpClient = New-Object FtpClient
    $ftpClient.UploadFile("ftp://your-ftp-server/yourfile.name", "C:\YourLocalFile.name")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-24
      • 2014-03-30
      • 2013-05-24
      • 2014-02-03
      • 2023-03-26
      • 1970-01-01
      • 2012-04-26
      相关资源
      最近更新 更多