使用WinSCP .NET程序集时PreserveTimestamp属性找不到问题求助
问题解决:WinSCP .NET程序集
PreserveTimestamp属性找不到错误 错误原因
你直接在Session对象上设置PreserveTimestamp是错误的——该属性不属于Session类,而是**TransferOptions传输选项类**的属性。同时服务器不支持时间戳保留操作,需要在传输配置中关闭该功能。
正确设置方式及修改后的脚本
将PreserveTimestamp设置到TransferOptions实例中,并在调用PutFiles时传入该选项:
# Load WinSCP .NET assembly Add-Type -Path "WinSCPnet.dll" # Setup session options $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ Protocol = [WinSCP.Protocol]::Sftp HostName = "[server IP]" UserName = "[username]" Password = "" SshHostKeyFingerprint = "ssh-rsa 1024 ...=" } # 若需要忽略权限错误,可添加以下配置 # $sessionOptions.AddRawSettings("IgnorePermissionErrors", "1") $session = New-Object WinSCP.Session try { # Connect $session.Open($sessionOptions) # 创建传输选项并关闭时间戳保留 $transferOptions = New-Object WinSCP.TransferOptions $transferOptions.PreserveTimestamp = $False # 上传时传入传输选项 $session.PutFiles("filename.xlsx", "/destination/", $False, $transferOptions).Check() } finally { # Disconnect, clean up $session.Dispose() }
关键说明
PutFiles方法的第四个参数为TransferOptions实例,必须正确传入才能让配置生效- 若仍有权限相关错误,可在
SessionOptions中添加$sessionOptions.AddRawSettings("IgnorePermissionErrors", "1")开启忽略权限错误选项
内容的提问来源于stack exchange,提问作者user2738776
相关产品推荐
相关产品推荐

