Есть ли способ обновить значение параметра, которое уже было отправлено в другой экземпляр 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 параметров (переменных))
Я хотел бы спросить вас, ребята, если кто-то уже решил эту проблему.Есть ли для этого элегантное решение?