DSC, как узнать, требуется ли после запуска конфигурации перезагрузка

Поэтому я использую режим DSC Push

У меня около 200 развертываний в день в нескольких средах (DEV/INT/QA/PROD)

Каждый раз, когда я развертываю, я хочу убедиться, что каждый сервер настроен правильно

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

Поэтому я хотел бы знать, если есть способ узнать, если после запуска конфигурации DSC требуется перезагрузка / перезапуск

В основном после запуска этой линии

Start-DscConfiguration -Wait -Force -Path .\SomePath

Примеры того, как я настраиваю пакеты

   Package MVC3
    {
        Name = "Microsoft ASP.NET MVC 3"
        Ensure = "Present"
        Path = "$Env:SystemDrive\AspNetMVC3ToolsUpdateSetup.exe"
        ProductId = "DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA"
        Arguments = "/q"
        DependsOn = "[WindowsFeature]IIS"
        Credential = $Credential
    }

   Package MVC4
    {
        Name = "Microsoft ASP.NET MVC 4 Runtime"
        Ensure = "Present"
        Path = "$Env:SystemDrive\AspNetMVC4Setup.exe"
        ProductId = "942CC691-5B98-42A3-8BC5-A246BA69D983"
        Arguments = "/q"
        DependsOn = "[Package]MVC3"
        Credential = $Credential
    }

1 ответ

Решение

То, что я всегда использовал в прошлом, это HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations значение реестра. Если он не пустой - значит, вы ожидаете перезагрузки. Обратите внимание, что значение реестра даже не должно существовать, если вы не ожидаете перезагрузки. Он удаляется при перезагрузке. Так что, если вы этого не видите, вот почему.

Редактировать: также добавьте этот ключ в микс:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile

Эти два ключа вместе должны сказать вам, ожидает ли перезагрузка или нет.

Проверьте эту статью Microsoft - хотя статья посвящена Exchange, в ней четко указано, как проверка этих двух значений реестра позволяет Exchange узнать, ожидает ли перезагрузка или нет: http://technet.microsoft.com/en-us/library/cc164360(v=EXCHG.80).aspx

Редактировать 29 октября 2014 года. Microsoft выпустила новый ресурс "Конфигурация требуемого состояния" под названием xPendingReboot, который очень хорошо справится с задачей определения, ожидает ли ваша система перезагрузки или нет. Это делается путем просмотра следующего списка ключей реестра:

$ComponentBasedServicing = (Get-ChildItem 'hklm:SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\').Name.Split("\") -contains "RebootPending"
$WindowsUpdate = (Get-ChildItem 'hklm:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\').Name.Split("\") -contains "RebootRequired"
$PendingFileRename = (Get-ItemProperty 'hklm:\SYSTEM\CurrentControlSet\Control\Session Manager\').PendingFileRenameOperations.Length -gt 0
$ActiveComputerName = (Get-ItemProperty 'hklm:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName').ComputerName
$PendingComputerName = (Get-ItemProperty 'hklm:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName').ComputerName
$PendingComputerRename = $ActiveComputerName -ne $PendingComputerName
Другие вопросы по тегам