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
行来接受证书。
我想将 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
行来接受证书。