2

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

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

文档表明这是因为我没有对目标目录的修改访问权限。我做了这个WinSCP -> Preferences -> Endurance -> Disable
我检查了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'.$$。看起来美元符号是它试图创建的某种临时文件。有没有办法禁用导致这种情况的任何设置?

4

1 回答 1

3

使用 PowerShell 中的WinSCP .NET 程序集一文中介绍了在 PowerShell 中使用枚举的语法。

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


您可以在命令文档TransferResumeSupport.State转换为 .NET 程序集get部分找到PowerShell 示例:put

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

WinSCP GUI 还可以为您生成代码模板(包括TransferOptionsTransferResumeSupportState代码)。

于 2016-02-08T22:05:58.347 回答