Mit "sftp" klappt das so nicht unbedingt.
Hierfür gibt es für PASE (nicht QSH!) einen Batchenhancer, allerdings weiß ich im Moment nicht mehr wie der heißt.

Ansonsten könnte auch folgendes funktionieren:

echo "Scriptbefehl1" >MyScript.txt;
echo "Scriptbefehl2" >>MyScript.txt;
:
cat MyScript.txt | sftp .... >Sftp.Log 2>&1;

Diese Anweisungen alle an QSH übergeben.
Wichtig ist nur, dass jedes Kommando mit Semikolon abgeschlossen wird.