web-dev-qa-db-ja.com

DSC、構成の実行後に再起動が必要かどうかを確認する方法

だから私はDSCプッシュモードを使用しています

いくつかの環境(DEV/INT/QA/PROD)に1日あたり約200の展開があります

デプロイするたびに、各サーバーが正しく構成されていることを確認したい

そのため、ユーザーの操作なしで完全に実行される展開の一部として、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
    }
6
Jupaol

私が過去にいつも使っていたのはHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperationsレジストリ値。空でない場合は、再起動を保留しています。再起動を保留していない限り、レジストリ値は存在しないはずであることに注意してください。再起動すると削除されます。それで、あなたがそれを見ないならば、それが理由です。

編集:また、このキーをミックスに投入します:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile

これらの2つのキーを合わせると、再起動が保留中であるかどうかがわかります。

このMicrosoftの記事を確認してください-この記事はExchangeに関するものですが、これら2つのレジストリ値を確認することで、Exchangeが再起動が保留中であるかどうかを知る方法が明確に示されています: http://technet.Microsoft.com/en- us/library/cc164360(v = EXCHG.80).aspx

2014年10月29日編集:Microsoftは、xPendingRebootと呼ばれる新しいDesired StateConfigurationリソースをリリースしました。システムが再起動を保留しているかどうかを確認するのはかなり良い仕事です。これは、次のレジストリキーのリストを確認することで実行されます。

$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
6
Ryan Ries