Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $SrcEntries = Get-ChildItem $FolderLocation -Recurse
- $Srcfolders = $SrcEntries | Where-Object{$_.PSIsContainer}
- $SrcFiles = $SrcEntries | Where-Object{!$_.PSIsContainer}
- $Credentials = New-Object System.Net.NetworkCredential($FTPUser,$FTPPassword)
- $FTPrequest = [System.Net.FtpWebRequest]::Create($RemoteFilePath)
- $FTPrequest.Method = [System.Net.WebRequestMethods+FTP]::GetDateTimestamp
- $FTPrequest.Credentials = $Credentials
- $response = $FTPrequest.GetResponse().StatusDescription
- function ListFtpDirectory($url, $credentials)
- {
- $listRequest = [Net.WebRequest]::Create($url)
- $listRequest.Method = [System.Net.WebRequestMethods+FTP]::ListDirectoryDetails
- $listRequest.Credentials = $credentials
- $lines = New-Object System.Collections.ArrayList
- $listResponse = $listRequest.GetResponse()
- $listStream = $listResponse.GetResponseStream()
- $listReader = New-Object System.IO.StreamReader($listStream)
- while (!$listReader.EndOfStream)
- {
- $line = $listReader.ReadLine()
- $lines.Add($line) | Out-Null
- }
- $listReader.Dispose()
- $listStream.Dispose()
- $listResponse.Dispose()
- foreach ($line in $lines)
- {
- $tokens = $line.Split(" ", 9, [StringSplitOptions]::RemoveEmptyEntries)
- $name = $tokens[8]
- $permissions = $tokens[0]
- if ($permissions[0] -eq 'd')
- {
- Write-Host "Directory $name"
- $fileUrl = ($url + $name)
- ListFtpDirectory ($fileUrl + "/") $credentials
- }
- else
- {
- Write-Host "File $name"
- }
- }
- }
- $credentials = New-Object System.Net.NetworkCredential("user", "mypassword")
- $url = "ftp://ftp.example.com/directory/to/list/"
- ListFtpDirectory $url $credentials
- # Load WinSCP .NET assembly
- Add-Type -Path "WinSCPnet.dll"
- # Setup session options
- $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
- Protocol = [WinSCP.Protocol]::Ftp
- HostName = "ftp.example.com"
- UserName = "user"
- Password = "mypassword"
- }
- $session = New-Object WinSCP.Session
- try
- {
- # Connect
- $session.Open($sessionOptions)
- # Download files
- $options =
- [WinSCP.EnumerationOptions]::EnumerateDirectories -bor
- [WinSCP.EnumerationOptions]::AllDirectories
- $fileInfos = $session.EnumerateRemoteFiles("/directory/to/list", $Null, $options)
- foreach ($fileInfo in $fileInfos)
- {
- Write-Host $fileInfo.FullName
- }
- }
- finally
- {
- # Disconnect, clean up
- $session.Dispose()
- }
Add Comment
Please, Sign In to add comment