2012-08-09 72 views
1

我已经搜索并阅读了很多关于在Powershell中下载SSL FTP文件的信息......但是如何上传它们呢?我有一个文件名,我需要上传每一天,我得到的错误,我没有登录。 我目前上传到其他FTP站点是这样的: $ Filename =“myfile.txt” $ FullPath =“\ server \ share \ $ Filename“ $ ftp =”ftp:// user:[email protected]/$Filename“ $ ftpWebClient = New-Object System.Net.WebClient $ ULuri = New-Object System。 URI($ ftp) $ ftpWebClient.UploadFile($ ULuri,$ FullPath)通过Powershell自动上传SSL FTP上传

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

谢谢!

回答

6

我使用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() 
+0

SFTP不是通过TLS/SSL的FTP。对于使用TLS/SSL的FTP,使用'$ sessionOptions.Protocol = [WinSCP.Protocol] :: Ftp'和'$ sessionOptions.FtpSecure = [WinSCP.FtpSecure] :: Explicit' – 2017-06-29 06:33:27

2

如你已经在使用脚本中的.NET框架WebClient类,我建议你在PowerShell中嵌入C#代码创建一个支持FTP通过TLS Web客户端,衍生版本:

$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")