Powershell:在 Invoke-WebRequest 之后调用 New-WebServiceProxy 废墟
Powershell: invoking New-WebServiceProxy ruins following Invoke-WebRequest
到目前为止的故事:我正在写一个 'create-new-user' PoSh 脚本,除此之外我还需要它:
- 创建 WebServiceProxy 对象作为变量(因为我们使用的 Cisco UCM 利用 SOAP 请求与其交互)
- 在我们的 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 脚本。
一些附加信息:
- Powershell 版本:4.0
- WebServiceProxy 部分是同事提供的,我不是很熟悉,只好把所有东西写在一个脚本里
- 由于脚本逻辑,我们无法更改命令的顺序,必须按此特定顺序执行
非常感谢任何关于此的建议,谢谢!
然而 New-WebServiceProxy
与 Invoke-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
这会运行它在另一个进程中等待结果。
到目前为止的故事:我正在写一个 'create-new-user' PoSh 脚本,除此之外我还需要它:
- 创建 WebServiceProxy 对象作为变量(因为我们使用的 Cisco UCM 利用 SOAP 请求与其交互)
- 在我们的 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 脚本。
一些附加信息:
- Powershell 版本:4.0
- WebServiceProxy 部分是同事提供的,我不是很熟悉,只好把所有东西写在一个脚本里
- 由于脚本逻辑,我们无法更改命令的顺序,必须按此特定顺序执行
非常感谢任何关于此的建议,谢谢!
然而 New-WebServiceProxy
与 Invoke-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
这会运行它在另一个进程中等待结果。