【问题标题】:PowerShell cannot find overloadPowerShell 找不到重载
【发布时间】:2014-10-18 01:54:08
【问题描述】:

我正在尝试使用 https://sshnet.codeplex.com/ 允许 PowerShell 脚本将文件上传到 SFTP 服务器。一切似乎都正常工作,除了它找不到方法 UploadFile 的重载并且被难住了。

方法的定义在这里

TypeName   : Renci.SshNet.SftpClient
Name       : UploadFile
MemberType : Method
Definition : void UploadFile(System.IO.Stream input, string path, System.Action[uint64] uploadCallback),
             void UploadFile(System.IO.Stream input, string path, bool canOverride, System.Action[uint64] uploadCallback)

我正在尝试使用这个重载

UploadFile(System.IO.Stream input, string path, System.Action[uint64] uploadCallback)

根据文档,uploadCallback 字段是可选的,在我的简单脚本中不需要,但即使添加它也会失败。我尝试调用它的方法如下,它们都失败了。

如何成功调用这些方法之一?我尝试过的示例如下。

示例

$client = New-Object Renci.SshNet.SftpClient($ftpHost, $ftpPort, $ftpUser, $ftpPass)
$client.Connect()

# ... get stream of file to upload here ...

$client.UploadFile($sourceStream, "$ftpPath$output")

失败

Cannot find an overload for "UploadFile" and the argument count: "2".
At F:\MyScript.ps1:170 char:2
+     $client.UploadFile($sourceStream, "$ftpPath$output")
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

接下来的尝试都失败了,基本上都是同样的错误信息

$action = [System.Action[uint64]]
$client.UploadFile($sourceStream, "$ftpPath$output", $action)

错误

Cannot find an overload for "UploadFile" and the argument count: "3".
At F:\MyScript.ps1:170 char:2
+     $client.UploadFile($sourceStream, "$ftpPath$output", $action)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

尝试使用$null 第三个参数

$client.UploadFile($sourceStream, "$ftpPath$output", $null)

失败

Cannot find an overload for "UploadFile" and the argument count: "3".
At F:\MyScript.ps1:169 char:2
+     $client.UploadFile($sourceStream, "$ftpPath$output", $null)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

【问题讨论】:

  • 试试$client.UploadFile($sourceStream, "$ftpPath$output", [Action[uint64]]$null)。另外,$sourceStream 是流,即$sourceStream -is [System.IO.Stream] 是否返回 True?
  • 这可能有助于减少这篇文章。要了解问题的实质,还有很多事情要做。甚至可能重新组织它,以便将一些更重要的细节放在开头。
  • @KeithHill 这就是问题所在,我传递的是StreamReader 而不是Stream。如果您填写答案,我会接受,谢谢。
  • 酷。我从评论中创建了一个答案。

标签: .net powershell


【解决方案1】:

尝试通过在方法调用中提供类型信息来为 PowerShell 提供更多帮助,例如:

$client.UploadFile($sourceStream, "$ftpPath$output", [Action[uint64]]$null)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多