将整个文件夹上传到 FTP 的 PowerShell 脚本
PowerShell Script to upload an entire folder to FTP
我正在使用 PowerShell 脚本将整个文件夹的内容上传到 FTP 位置。我对 PowerShell 还很陌生,只有一两个小时的经验。我可以让一个文件正常上传,但找不到一个好的解决方案来为文件夹中的所有文件执行此操作。我假设一个 foreach
循环,但也许有更好的选择?
$source = "c:\test"
$destination = "ftp://localhost:21/New Directory/"
$username = "test"
$password = "test"
# $cred = Get-Credential
$wc = New-Object System.Net.WebClient
$wc.Credentials = New-Object System.Net.NetworkCredential($username, $password)
$files = get-childitem $source -recurse -force
foreach ($file in $files)
{
$localfile = $file.fullname
# ??????????
}
$wc.UploadFile($destination, $source)
$wc.Dispose()
循环(或者更好的递归)是在 PowerShell(或一般的 .NET)中本机执行此操作的唯一方法。
$source = "c:\source"
$destination = "ftp://username:password@example.com/destination"
$webclient = New-Object -TypeName System.Net.WebClient
$files = Get-ChildItem $source
foreach ($file in $files)
{
Write-Host "Uploading $file"
$webclient.UploadFile("$destination/$file", $file.FullName)
}
$webclient.Dispose()
请注意,上面的代码不会递归到子目录中。
如果您需要更简单的解决方案,则必须使用第 3 方库。
Add-Type -Path "WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.ParseUrl("ftp://username:password@example.com/")
$session = New-Object WinSCP.Session
$session.Open($sessionOptions)
$session.PutFiles("c:\source\*", "/destination/").Check()
$session.Dispose()
上面的代码是递归的。
见https://winscp.net/eng/docs/library_session_putfiles
(我是WinSCP的作者)
我正在使用 PowerShell 脚本将整个文件夹的内容上传到 FTP 位置。我对 PowerShell 还很陌生,只有一两个小时的经验。我可以让一个文件正常上传,但找不到一个好的解决方案来为文件夹中的所有文件执行此操作。我假设一个 foreach
循环,但也许有更好的选择?
$source = "c:\test"
$destination = "ftp://localhost:21/New Directory/"
$username = "test"
$password = "test"
# $cred = Get-Credential
$wc = New-Object System.Net.WebClient
$wc.Credentials = New-Object System.Net.NetworkCredential($username, $password)
$files = get-childitem $source -recurse -force
foreach ($file in $files)
{
$localfile = $file.fullname
# ??????????
}
$wc.UploadFile($destination, $source)
$wc.Dispose()
循环(或者更好的递归)是在 PowerShell(或一般的 .NET)中本机执行此操作的唯一方法。
$source = "c:\source"
$destination = "ftp://username:password@example.com/destination"
$webclient = New-Object -TypeName System.Net.WebClient
$files = Get-ChildItem $source
foreach ($file in $files)
{
Write-Host "Uploading $file"
$webclient.UploadFile("$destination/$file", $file.FullName)
}
$webclient.Dispose()
请注意,上面的代码不会递归到子目录中。
如果您需要更简单的解决方案,则必须使用第 3 方库。
Add-Type -Path "WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.ParseUrl("ftp://username:password@example.com/")
$session = New-Object WinSCP.Session
$session.Open($sessionOptions)
$session.PutFiles("c:\source\*", "/destination/").Check()
$session.Dispose()
上面的代码是递归的。
见https://winscp.net/eng/docs/library_session_putfiles
(我是WinSCP的作者)