Powershell:在 Invoke-WebRequest 之后调用 New-WebServiceProxy 废墟

Powershell: invoking New-WebServiceProxy ruins following Invoke-WebRequest

到目前为止的故事:我正在写一个 'create-new-user' 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" -Method Get

我发现调用 WebRequest before 创建 WebServiceProxy 对象成功,但是在任何时候调用 WebRequest after 失败并显示以下内容错误:

Invoke-WebRequest: The underlying connection was closed: An unexpected error occurred on a send.

我没有使用 .NET、类 和类似东西的经验,所以我的假设可能是错误的,但现在我正在尝试(但没有成功)找出这种行为是否符合预期?基本逻辑表明创建变量不应影响调用简单请求,但它仍然会影响。因此,如果 link 阅读解释其工作原理的文章,我将不胜感激。

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

一些附加信息:

非常感谢任何关于此的建议,谢谢!

然而 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

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