【问题标题】:Calling the method 'SubmitJob' from new-webserviceproxy cmdlet in Powershell从 Powershell 中的 new-webserviceproxy cmdlet 调用方法“SubmitJob”
【发布时间】:2017-04-20 15:56:45
【问题描述】:

我想从 cmdlet 'new-webserviceproxy' 中调用方法 SubmitJob。从 cmdlet 公开的方法如下。

方法SubmitJob的定义如下

该方法需要许多参数。但我们只想传递两个参数,即“pJobDefinition”和“pAction”。

当我们单独传递这两个参数时,我们会遇到错误。

帮助我通过单独传递这两个参数来调用方法。

提前致谢

【问题讨论】:

  • ...是什么让你认为它可以工作?
  • @TessellatingHeckler 我不确定该方法中哪个是强制参数。我是 Powershell 中服务代理 cmdlet 的新手。
  • 您使用的$url 是可以与我们共享的公共资源吗?我尝试了New-WebServiceProxy 'http://www.webservicex.net/globalweather.asmx?WSDL',但在我的列表中没有得到相同的方法。还有你用的是哪个PS版本?您列出了 3 个,因此可以更加努力地进行测试
  • 如果为其他参数传递 $nulls 会发生什么?
  • 我使用的是powershell 4.0版

标签: .net powershell powershell-3.0 powershell-4.0 powershell-5.0


【解决方案1】:

您正在调用的方法的创建者定义了哪些参数是强制性的,哪些具有允许它们是可选的默认值。作为该方法的使用者,您别无选择,只能为所有必需的参数提供值。您可能能够传递 $null 值或使用 [System.Management.Automation.Language.NullString]::Value 将空值传递给特定参数,但这样做的能力不取决于您,它完全由方法的创建者决定。

您可以做的是创建一个包装器函数,该函数只接受您希望呈现的两个输入,然后使用您定义的默认值添加所有附加参数。例如:

function SomeFunction ($foo,$bar,$foobar){
  #do something
  $foo
  $bar
  $foobar
}

function MyShortFunction ($foo){
  SomeFunction($foo, "a parameter that doesn't change", "some other hardcoded parameter")
}

然而,为了做到这一点,您需要确定要传递哪些“默认”参数值,以确保调用正常工作。简而言之,方法的创建者决定需要哪些值,您必须确保以某种方式传递这些参数。

【讨论】:

  • 嗨,提供所有参数后,我收到以下错误。使用“23”参数调用“SubmitJob”的异常:“请求失败,HTTP 状态 401:未授权。”通过 UI,我可以使用相同的参数提交,但是当我尝试通过 powershell 时,我得到了上述错误。
  • 网络服务或方法是否需要显式设置凭据?这听起来像是一个无关的身份验证问题。如果您在验证时遇到问题,我会发布一个新问题,其中包含说明确切问题的简明代码。
  • 我已尝试提供凭据。我仍然收到那个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 2011-11-12
  • 1970-01-01
相关资源
最近更新 更多