Обновить параметр, который уже был передан другому экземпляру - PullRequest
0 голосов
/ 24 октября 2018

Есть ли способ обновить значение параметра, которое уже было отправлено в другой экземпляр PowerShell?

Intro

Я пишу 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(), я получаю это сообщение об ошибке (имеет смысл):

Невозможно связать параметр, так как параметр tryCounter указан более одного раза.Чтобы предоставить несколько значений параметрам, которые могут принимать несколько значений, используйте синтаксис массива.Например, «-параметр value1, value2, value3»

Таким образом, речь идет не о передаче параметра (первый запуск работает нормально), а о его обновлении для второго запуска.

Если возможно, я бы хотел избежать

  • избавления от () всего экземпляра и запуска полностью нового - слишком много рефакторинга в этот момент
  • передать параметр через файл, средуvar

  • AddArgument, который на самом деле работает, но он всегда создает новый дополнительный параметр в экземпляре paralel, включая предыдущие (может быть прочитан через $PSBoundParameters).Не очень элегантно (1.000x попыток = 1.000x параметров (переменных))

Я хотел бы спросить вас, ребята, если кто-то уже решил эту проблему.Есть ли для этого элегантное решение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...