WinSCP在PowerShell中禁用ResumeSupport

时间:2016-02-08 20:11:09

标签: powershell sftp winscp winscp-net

我正在使用WinSCP编写将SQL Server连接到SFTP服务器。我正在尝试将文件写入SFTP服务器,我只有写访问权限,而不是修改。我有问题,因为我回来了

  

无法创建远程文件'/xxx.filepart'。

文档建议这是因为我没有对目标目录的修改权限。我做了这个 WinSCP - >偏好 - >耐力 - >禁用
我检查了winscp.ini文件,ResumeSupport2(我认为这意味着已禁用)。我跑"echo $transferOptions.ResumeSupport"并说它处于默认状态。

我查了这个文件:
https://winscp.net/eng/docs/ui_pref_resume
https://winscp.net/eng/docs/library_transferoptions#resumesupport

但是,我没有看到PowerShell示例,只有C#。

我尝试了$transferOptions.ResumeSupport.State = Off$transferOptions.ResumeSupport.Off等各种排列。其中一个说它是只读的。

我知道$transferOptions是一个变量,但它来自默认脚本。该对象确定转移选项$transferOptions = New-Object WinSCP.TransferOptions

提前感谢您的帮助

编辑:整体问题是我只对服务器有写访问权限,但不能修改。我收到一个新错误:“无法覆盖远程文件'/xxx'.$$。看起来美元符号是它试图创建的某种临时文件。有没有办法禁用导致此问题的任何设置?

1 个答案:

答案 0 :(得分:2)

在PowerShell中使用枚举的语法如下所述 文章Using WinSCP .NET assembly from PowerShell

  

使用静态字段语法[Namespace.Type]::Member访问枚举值,例如[WinSCP.Protocol]::Sftp

您可以在getput命令文档的TransferResumeSupport.State部分找到Converting to .NET assembly的PowerShell示例:

$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.ResumeSupport.State = [WinSCP.TransferResumeSupportState]::Off
$session.GetFiles(..., ..., $False, $transferOptions).Check()

WinSCP GUI can also generate a code template(包括TransferOptionsTransferResumeSupportState代码)。