最近、Azure上のWindows Server 2016 VMが、自動に設定されていて、システムを再起動した後、一部のサービス(ADFS、リモートデスクトップブローカーなど)を開始できない場合があることに気付きました。障害が発生した場合にサービスを再起動するための回復オプション。再起動から長時間経過しても発生するので、待つ必要はありません。手動でサービスを開始すると、正常に機能します。
私がやりたいのは、PowerShell DSCを使用して、スタートアップの種類が[自動/自動遅延]に設定されているすべてのサービスが常に実行されていることを確認することです。次の ブログ投稿 を見つけました。これは、個々のサービスに対してこれを行う方法を説明していますが、スタートアップが自動に設定されているサービスに対してどのように行うのですか?
別の便利な投稿を見つけました ここ しかし、これは通常のPowerShellスクリプトであり、代わりにDSCを使用して実行したいと思います。
ありがとうございました。
更新:次のDSCスクリプトリソースを使用しました:
SetScript = {
$service = Get-WmiObject -Class Win32_Service -Filter "startmode = 'auto' AND state != 'running'"
foreach ($svc in $service)
{
Start-Service $svc.Name
}
}
TestScript = {
$service = Get-WmiObject -Class Win32_Service -Filter "startmode = 'auto' AND state != 'running'"
if ($null -eq $service)
{
return $true
}
else
{
return $false
}
}
スクリプトステップまたはサービスのリストを使用しない限り、PowerShellDSCでこれを行うことはできません。