DSC, como saber se depois de executar a configuração é necessária uma reinicialização

6

Estou usando o modo DSC Push

Tenho cerca de 200 implantações por dia em vários ambientes (DEV / INT / QA / PROD)

Toda vez que eu implantar, quero ter certeza de que cada servidor está configurado corretamente

Por isso, estou executando o DSC automaticamente como parte da minha implantação, que é executada totalmente sem a interação do usuário

Então, eu gostaria de saber se há uma maneira de saber se, após a execução da configuração do DSC, é necessário reinicializar / reiniciar

Basicamente após executar esta linha

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

Exemplos de como estou configurando os pacotes

   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
    }
    
por Jupaol 17.03.2014 / 22:51

1 resposta

6

Algo que eu sempre usei no passado é o HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ PendingFileRenameOperations valor do registro. Se não estiver vazio, você está aguardando uma reinicialização. Observe que o valor do registro não deve existir, a menos que você esteja aguardando uma reinicialização. É apagado após a reinicialização. Então, se você não vê, é por isso.

Editar: também jogue essa chave na mistura:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile

Essas duas chaves juntas devem informar se uma reinicialização está pendente ou não.

Verifique este artigo da Microsoft - embora o artigo seja sobre o Exchange, ele claramente menciona como a verificação desses dois valores do Registro é como o Exchange sabe se uma reinicialização está pendente ou não: link

Editar 29 de outubro de 2014: A Microsoft lançou um novo recurso Desired State Configuration chamado xPendingReboot que fará um bom trabalho em descobrir se o seu sistema está pendente reinicialize ou não. Ele faz isso observando a seguinte lista de chaves do Registro:

$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
    
por 17.03.2014 / 23:31