更新参数,该参数已经传递给另一个实例

时间:2018-10-24 17:03:45

标签: powershell parameters arguments instance

是否有一种方法可以更新已发送到另一个PowerShell实例的参数值?

简介

我正在编写由appx组成的E2E监控。 8个检查。 每个检查都作为一个实例运行,示例得以简化。

$psInstance = [System.Management.Automation.PowerShell]::Create()
...
while ($true) {
    $attemptCounter++
    [void]$psInstance.AddScript($myE2ECheckScript)
    [void]$psInstance.AddParameter('currentAttempt', $attemptCounter)
    $psInstances.$e2eCheckName.ASyncHandler = $psInstance.BeginInvoke()
    ...
}

如果此e2eCheck失败(例如,页面无法正确加载),则在发送警报之前,我停止()psInstance,稍等一下,然后重试。 当然,另一次尝试应该增加$attemptCounter,我将它作为参数传递给实例。

当我尝试通过AddParameter()传递它时,我收到此错误消息(很有意义):

  

由于指定了参数“ attemptCounter”,因此无法绑定参数   不止一次。提供多个值给可以   接受多个值,请使用数组语法。例如,“-参数   value1,value2,value3“

因此,这与传递参数无关(第一次运行正常),而与第二次更新有关。

如果可能,我想避免

  • dispose()整个实例并开始全新的实例-太多 在这一刻重构
  • 通过文件,环境var传递参数

  • AddArgument,它确实有效,但是它总是创建新的 并行实例中的附加参数,包括先前的参数 (可以通过$PSBoundParameters进行读取)。不太优雅(1.000x尝试 = 1.000x参数(变量))

我想问你们,是否有人已经解决了这个问题。有一个优雅的解决方案吗?

0 个答案:

没有答案