Guest User

Untitled

a guest
Nov 24th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. $SrcEntries = Get-ChildItem $FolderLocation -Recurse
  2.  
  3. $Srcfolders = $SrcEntries | Where-Object{$_.PSIsContainer}
  4. $SrcFiles = $SrcEntries | Where-Object{!$_.PSIsContainer}
  5.  
  6. $Credentials = New-Object System.Net.NetworkCredential($FTPUser,$FTPPassword)
  7. $FTPrequest = [System.Net.FtpWebRequest]::Create($RemoteFilePath)
  8. $FTPrequest.Method = [System.Net.WebRequestMethods+FTP]::GetDateTimestamp
  9. $FTPrequest.Credentials = $Credentials
  10. $response = $FTPrequest.GetResponse().StatusDescription
  11.  
  12. function ListFtpDirectory($url, $credentials)
  13. {
  14. $listRequest = [Net.WebRequest]::Create($url)
  15. $listRequest.Method = [System.Net.WebRequestMethods+FTP]::ListDirectoryDetails
  16. $listRequest.Credentials = $credentials
  17.  
  18. $lines = New-Object System.Collections.ArrayList
  19.  
  20. $listResponse = $listRequest.GetResponse()
  21. $listStream = $listResponse.GetResponseStream()
  22. $listReader = New-Object System.IO.StreamReader($listStream)
  23. while (!$listReader.EndOfStream)
  24. {
  25. $line = $listReader.ReadLine()
  26. $lines.Add($line) | Out-Null
  27. }
  28. $listReader.Dispose()
  29. $listStream.Dispose()
  30. $listResponse.Dispose()
  31.  
  32. foreach ($line in $lines)
  33. {
  34. $tokens = $line.Split(" ", 9, [StringSplitOptions]::RemoveEmptyEntries)
  35. $name = $tokens[8]
  36. $permissions = $tokens[0]
  37.  
  38. if ($permissions[0] -eq 'd')
  39. {
  40. Write-Host "Directory $name"
  41.  
  42. $fileUrl = ($url + $name)
  43. ListFtpDirectory ($fileUrl + "/") $credentials
  44. }
  45. else
  46. {
  47. Write-Host "File $name"
  48. }
  49. }
  50. }
  51.  
  52. $credentials = New-Object System.Net.NetworkCredential("user", "mypassword")
  53. $url = "ftp://ftp.example.com/directory/to/list/"
  54. ListFtpDirectory $url $credentials
  55.  
  56. # Load WinSCP .NET assembly
  57. Add-Type -Path "WinSCPnet.dll"
  58.  
  59. # Setup session options
  60. $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
  61. Protocol = [WinSCP.Protocol]::Ftp
  62. HostName = "ftp.example.com"
  63. UserName = "user"
  64. Password = "mypassword"
  65. }
  66.  
  67. $session = New-Object WinSCP.Session
  68.  
  69. try
  70. {
  71. # Connect
  72. $session.Open($sessionOptions)
  73.  
  74. # Download files
  75. $options =
  76. [WinSCP.EnumerationOptions]::EnumerateDirectories -bor
  77. [WinSCP.EnumerationOptions]::AllDirectories
  78. $fileInfos = $session.EnumerateRemoteFiles("/directory/to/list", $Null, $options)
  79. foreach ($fileInfo in $fileInfos)
  80. {
  81. Write-Host $fileInfo.FullName
  82. }
  83. }
  84. finally
  85. {
  86. # Disconnect, clean up
  87. $session.Dispose()
  88. }
Add Comment
Please, Sign In to add comment