Copy-Item not working (as expected)

I have a script that copies files to some remote machines. It’s only purpose is to push the files out, but I also want to make it flexible. There is a standard destination folder on the remote machine, and the default source location is the current directory. I have created parameters to change both the source and destination folders, and an option to select the files to be added to the ‘-Include’ option.
However, the files do not copy, and I get no error message. If I copy and paste the command that is being issued directly into the PS prompt, it does work. What can I be doing wrong?

Thanks,

 [CmdletBinding()]
    Param(
        [Parameter(valuefrompipeline=$true,Position=0)]
        [alias("cn")]
        [string[]]$ComputerName=($servername.keys | %{if($servername.$_  -eq $env:computername){$_}}),
        [alias("f")]
        [string]$File,
        [string]$From,
        [string]$To

        
        )
        Begin
        {
        }
        Process
        {
        foreach($computer in $ComputerName){
            # Push specified software out to listed machines
            # default Destination will Data drive \ GEO_Install -  Option for desination location
            # Source will be current folder location - But option for source location


                $geoServer= $($serverName[$($Computer)]) 
                Write-Host -ForegroundColor Yellow "Processing: $ComputerName  System Name: $geoServer`n"
                
                if ($File)
                { 
                    Write-Verbose "A filter has been specified : $File"
                }
                Else
                {
                    Write-verbose "No filter has been specified - All files will be copied." 
                }

                if ($From)
                {
                    Write-Verbose "A source location has been specified  : $From"
                    
                    
                }
                Else
                {
                    Write-Verbose "Using default source location, current directory."
                    $From ="*"
                }


                if ($To)
                {
                    Write-Verbose "A Destination location has been specified : $To"
                }
                Else
                {
                    Write-Verbose "Using default destination location for specified computer"
                    $destdrive = $loaderHT["$Computer"]
                    $destDrive = $destdrive.substring(0,1) + "$"
                    $To = "\\$geoserver\$destdrive\GEO_Install\"
                    Write-Verbose "Default Destination : $dest"
                }

                Write-Verbose "---------------------------------------------------------------------------"
                Write-Verbose "Source Location : $From"
                Write-Verbose "Destination : $To"
                Write-Verbose "Include files : $File"
                Write-Verbose "Copy-Item -Path $From -Destination $To -Include $File -Force -Recurse"
                
                Try
                { 
                    
                    Copy-Item -Path $From -Destination $To -Include $File -force -Recurse -ErrorAction stop
                    #Copy-Item -Path "C:\dev\*" -Destination "C:\Test" -Include *.bat,*.txt -Force -Recurse
                    Write-Verbose "Copy-Item -Path $From -Destination $To -Include $File -Force -Recurse"
                    write-host "Software copied."
                  
                }
                Catch
                {
                    $errorMessage = $_.Exception.Message
                    Write-Error "An error occured copying software to : $Computer ($geoServer) , please check the log file for details"

                }
              }
        }
        End
        {}
               
}

Fixed - I needed to ensure my ‘’ and ‘*’ are in exactly the right places. Still a little strange that no errors are generated even when I ask the script to perform non-sense copies…