使用PowerShell和PowerShell FTP库进行FTP下载

使用PowerShell和PowerShell FTP库进行FTP下载,powershell,Powershell,我正试图弄清楚如何使用我从微软下载的PSFTP模块。我想递归地将整个ftp目录和所有目录下载到我的本地机器上。有没有人成功地做到了这一点,你能分享你的脚本吗?谢谢 编辑: 还有剧本: Import-Module PSFTP $FTPServer = 'ftp.xxxxxxxxxxxxxxxx.com' $FTPUsername = 'xxxxxxxxxxxx' $FTPPassword = 'xxxxxxxxxxxxxxxxxxxx' $FTPSecurePassword = ConvertT

我正试图弄清楚如何使用我从微软下载的PSFTP模块。我想递归地将整个ftp目录和所有目录下载到我的本地机器上。有没有人成功地做到了这一点,你能分享你的脚本吗?谢谢


编辑:

还有剧本:

Import-Module PSFTP
$FTPServer = 'ftp.xxxxxxxxxxxxxxxx.com'
$FTPUsername = 'xxxxxxxxxxxx'
$FTPPassword = 'xxxxxxxxxxxxxxxxxxxx'
$FTPSecurePassword = ConvertTo-SecureString -String $FTPPassword -asPlainText -Force
$FTPCredential = New-Object System.Management.Automation.PSCredential($FTPUsername,$FTPSecurePassword)
Set-FTPConnection -Credentials $FTPCredential -Server $FTPServer -Session MySession -UsePassive 
$Session = Get-FTPConnection -Session MySession 
Get-FTPChildItem -Session $Session -Path / -Recurse

修正代码:

$Session = Get-FTPConnection -Session MySession 
$FTPCredential = New-Object System.Management.Automation.PSCredential($FTPUsername,$FTPSecurePassword)
Set-FTPConnection -Credentials $FTPCredential -Server $FTPServer -Session
$Session -UsePassive 
Get-FTPChildItem -path $FTPServer -Session $Session -Recurse | Get-FTPItem -localpath C:\sitebackups\ -RecreateFolders -Verbose

这就是你想要的吗?

Get-FTPChildItem -path ftp://test.net/ftpfolder/test -Recurse | Get-FTPItem -localpath C:\Users\test\Downloads\ -RecreateFolders -Verbose
测试:

PS C:\Users\test> Get-FTPChildItem -path ftp://test.net/ftpfolder/test -Recurse | Get-FTPItem -localpath C:\Users\test\Downloads\ -RecreateFolders -Verbose
VERBOSE: Performing the operation "Download item:
'ftp://test.net/ftpfolder/test/folder1'" on target "".
VERBOSE: Performing the operation "Download item:
'ftp://test.net/ftpfolder/test/folder2'" on target "".
VERBOSE: Performing the operation "Download item:
'ftp://test.net/ftpfolder/test/file1.zip'" on
target "".
VERBOSE: Creating folder: ftpfolder\test\
226 Transfer complete.

VERBOSE: Performing the operation "Download item:
'ftp://test.net/ftpfolder/test/folder1/event_page.zip'"
on target "C:\Users\test\Downloads\event_page.zip".
VERBOSE: Creating folder: ftpfolder\test\folder2
226 Transfer complete.
您可以从PSFTP/Get FTPItem.ps1中找到更多示例

.EXAMPLE    
    PS P:\> Get-FTPChildItem -path folder/subfolder1 -Recurse | Get-FTPItem -localpath p:\test -RecreateFolders -Verbose
    VERBOSE: Performing operation "Download item: 'ftp://ftp.contoso.com/folder/subfolder1/test.xlsx'" on Target "p:\test\folder\subfolder1".
    VERBOSE: Creating folder: folder\subfolder1
    226 File send OK.

    VERBOSE: Performing operation "Download item: 'ftp://ftp.contoso.com/folder/subfolder1/ziped.zip'" on Target "p:\test\folder\subfolder1".
    226 File send OK.

    VERBOSE: Performing operation "Download item: 'ftp://ftp.contoso.com/folder/subfolder1/subfolder11/ziped.zip'" on Target "p:\test\folder\subfolder1\subfolder11".
    VERBOSE: Creating folder: folder\subfolder1\subfolder11
    226 File send OK.

你试过什么吗?[psftp]在这里不是合适的标记。在Powershell出现之前,“psftp”已经是PuTTY命令行工具至少有十年了。好吧,我会尝试一下,并让您知道任何一种方法,谢谢!好的,尝试了,FTP给了我这个错误:警告:Add-FTPItem:找不到会话DefaultFTPSession。首先使用Set-FTPConnection来配置FTP连接。这个FTP站点似乎正在使用TLS;我如何让脚本处理这个问题?@bbcompent1带有-enablesl-ignorecert选项。有关详细信息,请参阅PSFTP\Set FtpConnection.ps1@bbcompent1 Set FtpConnection-Credentials$Credentials-Server-enablesssl-ignoreCert-usecasive
.EXAMPLE    
    PS P:\> Get-FTPChildItem -path folder/subfolder1 -Recurse | Get-FTPItem -localpath p:\test -RecreateFolders -Verbose
    VERBOSE: Performing operation "Download item: 'ftp://ftp.contoso.com/folder/subfolder1/test.xlsx'" on Target "p:\test\folder\subfolder1".
    VERBOSE: Creating folder: folder\subfolder1
    226 File send OK.

    VERBOSE: Performing operation "Download item: 'ftp://ftp.contoso.com/folder/subfolder1/ziped.zip'" on Target "p:\test\folder\subfolder1".
    226 File send OK.

    VERBOSE: Performing operation "Download item: 'ftp://ftp.contoso.com/folder/subfolder1/subfolder11/ziped.zip'" on Target "p:\test\folder\subfolder1\subfolder11".
    VERBOSE: Creating folder: folder\subfolder1\subfolder11
    226 File send OK.