ftp/Simple.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | ######################################################### # # Summary: # This script demonstrates the following features: # - Connect # - Download of file # - Read drectory (enumeration) # - Disconnect # # Notes: # If you get the following error: # "cannot be loaded because the execution of scripts is disabled on this system." # Enable the execution of scripts: # Set-ExecutionPolicy RemoteSigned # # Technical support: support@smartftp.com # ######################################################### # abort on first error $ErrorActionPreference = "Stop" # to use the interop assembly, powershell 5.0 (CLR 4) or higher is required if ( [Environment] ::Is64BitProcess) { [void][Reflection.Assembly] ::LoadFrom(${env:ProgramFiles(x86)} + '\SmartFTP FTP Library\x64\Interop.sfFTPLib.dll' ) } else { [void][Reflection.Assembly] ::LoadFrom(${env:ProgramFiles} + '\SmartFTP FTP Library\Interop.sfFTPLib.dll' ) } $global = New-Object sfFTPLib.GlobalClass; # If LoadLicense is not called a trial license is automatically obtained from the activation server. The FTP Library uses WinHTTP to access # the activation server at www.smartftp.com (TLS, port 443). Ensure that your application is not blocked by any firewall. # TODO: insert the provided serial after the purchase of a license # $global.LoadLicense("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"); $ftp = New-Object sfFTPLib.FTPConnectionMTAClass; $ftp .Host = "ftp.smartftp.com" ; # For an unencrypted connection, comment out the next line $ftp .Protocol = [sfFTPLib.Protocol] ::ftpProtocolRequireTLS; #$ftp.Port = 21; # 21 is the default port $ftp .Username = "anonymous" ; $ftp .Password = "test@test.com" ; #$ftp.Passive = $true; # enabled by default # client certificate # If you have a certificate file, you can use SmartFTP Client to import it into the personal Windows certificate store "My" # 20 byte certificate thumbprint which identifies the certificate [Byte[]] $certificateThumbprint = 0x12, 0x13, 0x14, 0x15, 0x16, 0x12, 0x13, 0x14, 0x15, 0x16, 0x12, 0x13, 0x14, 0x15, 0x16, 0x12, 0x13, 0x14, 0x15, 0x16; #$ftp.SSLSocketLayer.ClientCertThumbprint = $certificateThumbprint; # $fileLogger = $ftp.SetFileLogger(); # $fileLogger.File = "C:\test.log"; $ftp .Connect(); Write-Host "Connected" ; $ftp .ChangeDirectory( "/" ); foreach ( $item in $ftp .ReadDirectory()) { # if you do not use the interop, the ModifyTimeAsDate must be converted with: # [System.DateTime]::FromOADate($item.ModifyTimeAsDate).ToString("o") Write-Host ( "Name={0}, Type={1}, Size={2}, ModifyTime={3}" -f $item .Name, $item .Type, $item .Size, $item .ModifyTimeAsDate) } $ftp .DownloadFile( "This is a DEMO server.txt" , "This is a DEMO server.txt" , 0,0); Write-Host "DownloadFile succeeded" $ftp .Disconnect(); |