Variáveis não são expandidas entre aspas simples, que é como você está passando os comandos na primeira instância. Como tal, no primeiro caso, o shell na extremidade remota nunca recebe seus valores, apenas recebe literal $1 e $2 , e eles não existem, então eles se expandem para nada.
$ var=foo
$ echo '$var'
$var
$ echo "$var"
foo
Por isso, pscp não obtém valores quando você passa $1 e $2 (porque eles não existem no shell remoto), por isso comete erros na inicialização. É assim que pscp acaba sendo chamado:
pscp -pw final_result.txt
Use aspas duplas quando quiser que as variáveis sejam expandidas pelo shell atual, e não por aspas simples. Usar aspas simples nesse caso seria apropriado apenas se você quisesse que as variáveis fossem expandidas pelo shell remoto .