PowerShell:FTP 上传整个

PowerShell: FTP Upload whole

我想将 2 个文件从我电脑上的目录上传到 ftp 服务器。

这是行不通的。有人有想法吗? 提前致谢!

问候

我的新完整代码:

$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

$LocalFilePath2 = "C:\M122\out"
$RemoteFileName2 = "****************"
$LocalFilePath2 = "******"
$ServerName2 = "*********"
$Username2 = "*******"
$Password2 = "*******************"

$ftpClient = New-Object FtpClient
$ftpclient.Credentials = New-Object System.Net.NetworkCredential($Username2, $Password2)

$files = Get-ChildItem $LocalFilePath2
foreach ($file in $files) {
    $uri2 = New-Object System.Uri("ftp://$ServerName2/$RemoteFileName2/$($file.name)")
    $ftpclient.uploadfile($uri2, $file.fullname)
}

您需要先创建一个 $webclient 对象才能尝试使用它:

$webclient =  New-Object System.Net.WebClient

当您创建 $ile 但从不使用它时,您的 foreach 循环中有一些奇怪的东西。 此外,您的远程文件名在需要为每个文件更新的地方是不变的。 也许你的意思是这样做:-

$files = Get-ChildItem $LocalFilePath2
foreach ($file in $files) {
    $uri2 = New-Object System.Uri("ftp://$ServerName2/$($file.name)")
    $webclient.uploadfile($uri2, $file.fullname)
}

如果您需要支持 TLS,请查看此 post Automate SSL FTP Upload via Powershell.

使用 h0r41i0 编写的代码 post 并使用 $ftpClient 而不是 $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

[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

$LocalFilePath2 = "****"
$ServerName2 = "****"
$Username2 = "****"
$Password2 = "****"

$ftpClient = New-Object FtpClient
$ftpclient.Credentials = New-Object System.Net.NetworkCredential($Username2, $Password2)

$files = Get-ChildItem $LocalFilePath2
foreach ($file in $files) {
    $uri2 = New-Object System.Uri("ftp://$ServerName2/$($file.name)")
    $ftpclient.uploadfile($uri2, $file.fullname)
}

请注意,如果远程服务器上的证书不受信任,那么您需要 ServerCertificateValidationCallback 行来接受证书。