1

到目前为止的故事:我正在编写一个“创建新用户”PoSh 脚本,除此之外,我还需要它:

  1. 创建WebServiceProxy对象作为变量(因为我们使用的 Cisco UCM 利用 SOAP 请求与其交互)
  2. 创建用户后,在我们的 Intranet 网站上拉一个 PHP 脚本以将其与 Active Directory 同步,最简单的方法是 AFAIR Invoke-WebRequest commandlet。

所以现在它看起来像这样:

$MyCreds = Get-Credential -Message "Specify your password" -Username $($env:username)
$AXL = New-WebServiceProxy -Uri $("\\server\smbshare\AXLAPI.wsdl") -Credential $MyCreds
...
Invoke-WebRequest -Uri "https://intranet.company.com/ad_sync.php" - 方法获取

我发现在创建 WebServiceProxy 对象之前调用 WebRequest 成功,但是在任何时候调用 WebRequest失败并出现以下错误:

Invoke-WebRequest:底层连接已关闭:发送时发生意外错误。

我对.NET、类和此类东西没有经验,所以也许我的假设是错误的,但现在我正在尝试(并且失败)找出这种行为是否是预期的?基本逻辑表明,创建变量不应该影响调用简单请求,但它仍然会影响。因此,我将不胜感激阅读链接,该链接解释了它的工作原理。

还有一个主要问题 - 是否有解决方案或至少是一种解决方法?我的理论建议就像删除 WebServiceProxy 对象(不知道如何)或使用其他方法来提取 PHP 脚本。

一些附加信息:

  • Powershell 版本:4.0
  • WebServiceProxy 部分由同事提供,所以我不太熟悉,只需将所有内容组合在一个脚本中即可
  • 由于脚本逻辑,我们无法更改命令的顺序,必须按此特定顺序完成

对此的任何建议都非常感谢,谢谢!

4

1 回答 1

0

然而New-WebServiceProxyInvoke-WebRequest它可能只是在当前的过程中。因此,一种解决方法是在当前进程之外运行它。

所以改变

Invoke-WebRequest -Uri "https://intranet.company.com/ad_sync.php" -Method Get

Start-Job -ScriptBlock { Invoke-WebRequest -Uri "https://intranet.company.com/ad_sync.php" -Method Get} | Receive-Job -Wait

这将在另一个进程中运行它并等待结果。

于 2016-12-27T20:23:40.537 回答