PowerShellで作成したWinSCPアップローダー(SFTP)がエラーを吐いてうまく動きませんでした。
WinSCP.SessionRemoteException: **ファイル '[ファイル名]' のアッ
プロードは成功しましたが、パーミッション/タイムスタンプの設定中にエラーが発生し
ました.**
調べてみるとTransferoptionsというのを指定しませんでした。以下おソース。
# WinSCPを使用するためのオマジナイ
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "xxx.xxx.xxx.xxx"
UserName = "user"
SshPrivateKeyPath = "C:\Users\papa\Documents\ssh\id_rsa.ppk"
PrivateKeyPassphrase = "xxxxxxxxxx"
SshHostKeyFingerprint = "取得したFingerprint"
}
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
#ここにTransferopitonsを設定
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.PreserveTimestamp = $False
# Upload files
$session.PutFiles("C:\backup\*", "/backup/*", $False, $transferOptions).Check()
}
finally
{
# Disconnect, clean up
$session.Dispose()
}
ポイントはTransferoptionsの中のPreserveTimestampをfalseに設定することです。
$transferOptions.PreserveTimestamp = $False
TransferOptionsをPutFilesメソッドの引数にセットして実行すればエラーが消える!!
素晴らしい!!
コメント