Назад | Перейти на главную страницу

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
    }

То, что я всегда использовал в прошлом, - это 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 г .: Корпорация Майкрософт выпустила новый ресурс конфигурации желаемого состояния под названием 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