4

我已经搜索并阅读了很多关于在 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上传创建一个全新的代码块,还是只需要对该代码进行细微调整?

谢谢!

4

2 回答 2

7

我使用 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()
于 2012-08-09T17:06:15.037 回答
6

由于您已经在脚本中使用 .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")
于 2017-04-14T21:18:02.873 回答