2017-04-24 54 views
0

Windowsサーバが再起動する必要があるかどうかを確認するにはどうすればよいですか?私はインストーラプロジェクトを作っています。ユーザーがこのインストーラを実行すると、オペレーティングシステムに保留中の再起動がある場合は、続行しないでください。 PowerShellのサーバが再起動を必要とするかどうかを確認する方法

を使用して

答えて

0

あなたは、再起動を必要とし、あなたが状態を確認するために、このPowerShellスクリプトを好きになるサーバーのかを決定しようとしている場合。再起動が保留されているサーバーを特定する簡単な方法は、レジストリを確認することです。この情報は、レジストリのHKeyLocalMachineハイブに格納されます。 PowerShellは、レジストリを操作するために生まれ育ちます。レジストリは、組み込みのPowerShellプロバイダの1つです。そのレジストリハイブに接続されているPSDriveが既にあります!あなたはファイルシステムのようにレジストリの周りをブラウズすることができます。

レジストリドライブに変更します。

//セット場所もそのエイリアスから呼び出すことができます

- CDおよびSL

セット場所HKLM:

//は-ChildItemコマンドレットは、取得もそのエイリアスから呼び出すことができます - dirとLS

は、Get-ChildItemコマンドレット

うわー!超簡単、そうですか? これで、「保留中の再起動」の場所がわかります。確認する場所がいくつかあります。

HKLM¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥WindowsUpdate¥Auto Update¥RebootRequired 自動アップデートによってインストールされたパッチは、再起動の必要性を登録します。

HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \コンポーネントベースのサービス\ RebootPending 保留中の再起動を識別できる別の場所です。

HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager さらに別です。最後に、存在する場合はWMI経由でクエリを実行できるConfiguration Managerがあります。

実際に4つの場所をすべて確認したいという機能が見つかりました。リモートコンピュータをチェックするためにいくつかのパラメータでまとめておく必要がありますが、一般的には素晴らしいスタートでした。私はコンピュータが再起動を保留しているかどうかと、再起動の元がどこから作成されているのかを気にするだけなので、最初の条件が満たされれば$ trueを返すように関数を修正しました。 http://gallery.technet.microsoft.com/scriptcenter/Get-PendingReboot-Query-bdb79542

function Test-PendingReboot { if (Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending" -EA Ignore) { return $true } if (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -EA Ignore) { return $true } if (Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA Ignore) { return $true } try { $util = [wmiclass]"\.\root\ccm\clientsdk:CCM_ClientUtilities" $status = $util.DetermineIfRebootPending() if(($status -ne $null) -and $status.RebootPending){ return $true } }catch{}

return $false }

に基づい https://gist.github.com/altrive/5329377

から適合

関連する問題