'How to add error logging to PowerShell script

I'm new to PowerShell scripts and would like to add error logging to the script below. The script is sending *.txt files to an FTP server.

How can I improve the error logging in this script? I'd like to catch any potential errors that might be triggered and maybe email them to an email address.

Right now, it's giving me the following error "Cannot find a variable with the name 'MyTestSession'." Why is this?

Import-Module PSFTP
[string] $User = 'testuser'

[string] $LocalFolder ='c:\EDI\Export\'
[string] $BackupFolder = 'C:\EDI\Backup\'
[string] $RemoteFolder ='/Inbound' 
[string] $FTPServ = '00.000.00.000'

[object] $objCred = $null
[System.Security.SecureString] $Pw

$Pw= ConvertTo-SecureString -String "2}bIed_d" -AsPlainText -Force
$objCred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($User, $Pw)

$GetFiles=Get-ChildItem -Filter *.txt -Path $LocalFolder

if ($null -ne $GetFiles) {

    Set-FTPConnection -Credentials $objCred -Server $FTPServ -Session MyTestSession -UsePassive -UseBinary
    $Session = Get-FTPConnection -Session MyTestSession 

    foreach ($i in $GetFiles)
    {
        $timestamp=(Get-Date).tostring("MMddyyyyhhmmss")
        $NewFile = $i.FullName -Replace ".txt", ".$timestamp.txt"
        Rename-Item -Path $i.FullName -NewName $NewFile
        Add-FTPItem -Session $Session -Path $RemoteFolder -Overwrite -LocalPath $NewFile
        move-Item $NewFile -Destination $BackupFolder
        set-content C:\EDI\FTPScripts\Errors\Export.log $error
    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source