Ok, além de descobrir que o nome da função estava errado, o que fez com que o script não copiasse seus arquivos, eu gostaria de mostrar a você o Powershell splatting:
$UserName = GetEnvironmentConfigValue "Scriptname.UserName"
$Password = GetEnvironmentConfigValue "Scriptname.Password"
$HostName = GetEnvironmentConfigValue "Scriptname.HostName"
$RemotePath = GetEnvironmentConfigValue "Scriptname.RemotePath"
$LocalPath = GetEnvironmentConfigValue "Scriptname.LocalPath"
$SshHostKeyFingerprint = GetEnvironmentConfigValue "Scriptname.SshHostKeyFingerprint"
$Remove=$true
Write-host "values: ${Username} ${Password} ${HostName} ${RemotePath} ${LocalPath} ${SshHostKeyFingerprint}"
SFTPUploadFiles $Username $Password $HostName $RemotePath $LocalPath $SshHostKeyFingerprint
O seguinte é o mesmo, mas com splatting. Ele faz uso de um hashtable que pode ser passado para uma função desde que todas as chaves hashtable (as strings antes do sinal =) correspondam aos nomes dos parâmetros da função:
$Parameters = @{
"UserName" = GetEnvironmentConfigValue "Scriptname.UserName"
"Password" = GetEnvironmentConfigValue "Scriptname.Password"
"HostName" = GetEnvironmentConfigValue "Scriptname.HostName"
"RemotePath" = GetEnvironmentConfigValue "Scriptname.RemotePath"
"LocalPath" = GetEnvironmentConfigValue "Scriptname.LocalPath"
"SshHostKeyFingerprint" = GetEnvironmentConfigValue "Scriptname.SshHostKeyFingerprint"
}
$Parameters
SFTPUploadFiles @Parameters -Remove:$false
Como sua função define Remove para true por padrão, é redundante especificá-la. Meu exemplo mostra que você pode misturar e combinar parâmetros normais com a hashtable usada para splatting.