У меня есть система, которая каждую ночь выполняет множество конфигураций DSC для создания машин. Это инициируется запланированным заданием (MultiJob) в Jenkins. Затем запланированное задание запускает отдельные задания и ожидает завершения всех заданий. В 90% случаев это работает без проблем.
Однако иногда одно из отдельных заданий требует перезагрузки. Это правильно настроено с LCM и с использованием ресурса DSC xPendingReboot. Здесь нет проблем.
Проблема заключается в том, что задание PowerShell, которое выполняется на целевой машине, завершается при запуске перезагрузки. Затем это запускает следующий этап процесса сборки, который завершается сбоем, поскольку процесс DSC фактически еще не завершен.
Кто-нибудь знает, как повторно получить отложенное задание DSC на целевой машине после ее перезагрузки?
Обновление (непроверенное): в настоящее время работает над сценарием, который вызывает метод GetCimSessionInstanceId в LCM для получения дескриптора сеанса после завершения задания. Затем этот идентификатор сеанса можно использовать для повторного получения CimSession на удаленном компьютере после перезагрузки с помощью командлета Get-CimSession. Я предполагаю, что смогу удаленно выполнить Get-Job в сеансе cim, чтобы определить, продолжается ли процесс DSC. Это приводит к дополнительному вопросу. Как мы можем определить, что начальное задание dsc завершилось из-за перезагрузки или это действительно конец процесса?