下記がPowerShellのスクリプトからWinScpを操作するスクリプトの例
transfer.sh
# バッチモードに設定し、確認/問い合わせを無効にする
option batch on
# ファイル上書きの確認などを無効にする
option confirm off
# 除外設定
option exclude "*.log;*.tmp"
# サーバーに接続
open username:password@host
# なおパスワードを指定して接続するには次のようにする
# open user:password@example.com
# リモートディレクトリを変更
cd /home/user/workspace
# バイナリモードに変更
option transfer binary
# ファイルをd:\にダウンロード(最後の\が省けません)
# -preservetime : タイムスタンプ変更なし
put -preservetime C:\Users\user\workspace\powershell\share\* ./
# 切断
close
## 異なるユーザーでサーバーに接続
#open user2@example.com
## リモートディレクトリを変更
#cd /home/user2
## ファイルをアップロード
#put d:\examplefile.txt
## 切断
#close
## 終了
exit
TransferFile.ps1
# WinScpのパス
$winScpPath = "C:\Users\user\tools\WinSCP-6.3.5-Portable\WinSCP.com"
# WinScp.exeの方を実行するなら\consoleオプションが必要
# $winScpPath = "C:\Users\user\tools\WinSCP-6.3.5-Portable\WinSCP.exe /console"
# スクリプトファイル
$winScpScriptPath = ".\transfer.sh"
# WinScp実行
& $winScpPath /script=$winScpScriptPath
receive.sh
# バッチモードに設定し、確認/問い合わせを無効にする
option batch on
# ファイル上書きの確認などを無効にする
option confirm off
# 除外設定
option exclude "*.log;*.tmp"
# サーバーに接続
open username:password@host
# なおパスワードを指定して接続するには次のようにする
# open user:password@example.com
# リモートディレクトリを変更
cd /home/user/workspace
# バイナリモードに変更
option transfer binary
# ファイルをd:\にダウンロード(最後の\が省けません)
# -preservetime : タイムスタンプ変更なし
get -preservetime ./* C:\Users\user\workspace\powershell\share\
# 切断
close
## 異なるユーザーでサーバーに接続
#open user2@example.com
## リモートディレクトリを変更
#cd /home/user2
## ファイルをアップロード
#put d:\examplefile.txt
## 切断
#close
## 終了
exit
ReceiveFile.ps1
# WinScpのパス
$winScpPath = "C:\Users\user\tools\WinSCP-6.3.5-Portable\WinSCP.com"
# WinScp.exeの方を実行するなら\consoleオプションが必要
# $winScpPath = "C:\Users\user\tools\WinSCP-6.3.5-Portable\WinSCP.exe /console"
# スクリプトファイル
$winScpScriptPath = ".\receive.sh"
# WinScp実行
& $winScpPath /script=$winScpScriptPath
参考