重新启动后重新获取 DSC 后台作业
Reacquiring DSC background job after a reboot
我有一个系统,每晚执行一系列 DSC 配置来构建机器。这是由 Jenkins 中的计划作业(MultiJob)发起的。调度作业然后触发单个作业并等待所有作业完成。 90% 的时间都没有问题。
但是,有时其中一项作业需要重新启动。这是使用 LCM 和 xPendingReboot DSC 资源正确配置的。这里没有问题。
问题是在目标计算机上执行的 PowerShell 作业在启动重启时结束。然后这会触发构建过程的下一阶段,该阶段失败,因为 DSC 过程实际上尚未完成。
有人知道如何在目标机器重新启动后重新获取目标机器上的挂起 DSC 作业吗?
更新(未测试):目前正在研究一个场景,在作业完成时调用 LCM 上的 GetCimSessionInstanceId 方法来获取会话句柄。然后,此会话 ID 可用于在通过 Get-CimSession cmdlet 重新启动后重新获取远程计算机上的 CimSession。我的假设是我将能够在 cim 会话上远程执行 Get-Job 以确定 DSC 进程是否继续。这就引出了一个额外的问题。我们如何确定初始 dsc 作业是由于重新启动而结束,还是实际上是进程结束?
这种方法应该可以满足您的需求http://nanalakshmanan.github.io/blog/DSC-get-job-details-post-reboot/
In cases where you want to obtain the information from the node post a reboot,
set DSC to not proceed after reboot. This can be done by using the following
meta configuration sample
[DscLocalConfigurationManager()]
Configuration Settings
{
Settings
{
ActionAfterReboot = 'StopConfiguration'
RebootNodeIfNeeded = $false
}
}
Then re-apply the existing configuration using the following command
Start-DscConfiguration -Wait -UseExisting -Verbose
我有一个系统,每晚执行一系列 DSC 配置来构建机器。这是由 Jenkins 中的计划作业(MultiJob)发起的。调度作业然后触发单个作业并等待所有作业完成。 90% 的时间都没有问题。
但是,有时其中一项作业需要重新启动。这是使用 LCM 和 xPendingReboot DSC 资源正确配置的。这里没有问题。
问题是在目标计算机上执行的 PowerShell 作业在启动重启时结束。然后这会触发构建过程的下一阶段,该阶段失败,因为 DSC 过程实际上尚未完成。
有人知道如何在目标机器重新启动后重新获取目标机器上的挂起 DSC 作业吗?
更新(未测试):目前正在研究一个场景,在作业完成时调用 LCM 上的 GetCimSessionInstanceId 方法来获取会话句柄。然后,此会话 ID 可用于在通过 Get-CimSession cmdlet 重新启动后重新获取远程计算机上的 CimSession。我的假设是我将能够在 cim 会话上远程执行 Get-Job 以确定 DSC 进程是否继续。这就引出了一个额外的问题。我们如何确定初始 dsc 作业是由于重新启动而结束,还是实际上是进程结束?
这种方法应该可以满足您的需求http://nanalakshmanan.github.io/blog/DSC-get-job-details-post-reboot/
In cases where you want to obtain the information from the node post a reboot, set DSC to not proceed after reboot. This can be done by using the following meta configuration sample
[DscLocalConfigurationManager()]
Configuration Settings
{
Settings
{
ActionAfterReboot = 'StopConfiguration'
RebootNodeIfNeeded = $false
}
}
Then re-apply the existing configuration using the following command
Start-DscConfiguration -Wait -UseExisting -Verbose