We have a blogpost describing the basics: Using FTP or SFTP in PowerShell
Getting the .pfx keys to work requires few additional lines of code. If these are client certificates that are intended for client authentication, the following code should do the trick:
[Reflection.Assembly]::LoadFrom("C:\Program Files\Rebex\FTP for .NET 2.0\bin\release\Rebex.Net.Ftp.dll")
[Reflection.Assembly]::LoadFrom("C:\Program Files\Rebex\FTP for .NET 2.0\bin\release\Rebex.Net.SecureSocket.dll")
$certificate = [Rebex.Security.Certificates.CertificateChain]::LoadPfx("c:\...\ClientCerts.pfx", "password")
$params = New-Object Rebex.Net.TlsParameters
$params.CertificateRequestHandler = [Rebex.Net.CertificateRequestHandler]::CreateRequestHandler($certificate)
$ftp = New-Object Rebex.Net.Ftp
$ftp.Connect("ftp.example.com", 21, $params, [Rebex.Net.FtpSecurity]::Explicit)
Please refer to our FTP/SSL tutorial for more information about these classes and methods.