Windowsマシンの再起動が必要かどうかを知りたい。しかし、私のスクリプトは投げられてエラーになります。
powershell "$key = Get-Item "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired" -ErrorAction SilentlyContinue"
Error :
Get-Item : A positional parameter cannot be found that accepts argument
'Update\RebootRequired'.
At line:1 char:8
+ $key = Get-Item
HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Aut ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
+ CategoryInfo : InvalidArgument: (:) [Get-Item], ParameterBindin
gException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell
.Commands.GetItemCommand
「コマンドプロンプト」でこのコマンドを実行しています。意味がわからない!
2つのパス、1つのキーをチェックする必要があり、可能なすべての場所をチェックするために、wmiを介して構成マネージャーに照会する必要があります。
try{
$status = ([wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities").DetermineIfRebootPending()
if($true -in (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired")
-or Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA Ignore
-or (($status -ne $null) -and $status.RebootPending)) {
# do stuff
}
} catch{}
保留中の再起動は、他の回答で詳しく説明されている理由だけでなく、さまざまな理由で発生する可能性があります。 PendingReboot モジュールを試してください。これは、さまざまなテストを単一のコマンドレットに組み込みます。
# Install
Install-Module -Name PendingReboot
# Run
Test-PendingReboot -Detailed
構文が正しくありませんでした。cmdからPowerShellコマンドを実行する場合は、次のようにする必要があります。
powershell.exe "Get-Item 'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'"
しかし、マティスが言及したように、このキーは再起動が保留中の場合にのみ存在します。
これを引き起こしている(そして頭痛の種はない)ことの1つは、SCCM 1906更新を実行しようとするたびに、保留中の再起動のために失敗したことです。調査を行ったところ、ComponentBasedServicingが作業を遅らせているように見え、オプションコンポーネントが自動的にインストールされていたことがわかりました。それはこの問題を修正したようです。
スクリプトをありがとう。この卵を割ろうとする多くのストレスを私は救った:)