【WinSCP】エラー「ファイルのアップロードは成功しましたが、パーミッション/タイムスタンプの設定中にエラーが発生しました」【PowerShell】

PowerShell
スポンサーリンク

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メソッドの引数にセットして実行すればエラーが消える!!

素晴らしい!!

コメント

タイトルとURLをコピーしました