私は同じ問題を抱えています。私はあちこち検索しましたが、役に立つものは何も見つかりませんでした。
最終的に、私は考えられるさまざまなことをいじり始めました。この問題の回避策は 2 つあります。
イベント ビューアーは、シャットダウンがスケジュールされたことを通知できますが、スケジュールされた時刻は通知しません。
1 つの考えとしては、イベント ビューアに、最新のシステム シャットダウン、スケジュールされたシャットダウン、およびスケジュールされたシャットダウンの最新のキャンセルを照会することです。スケジュールされたシャットダウンが、最新のキャンセルまたはシャットダウンよりも新しい場合、進行中のシャットダウンがあります。イベント ID は次のとおりです。開始されたスケジュールされたシャットダウンの場合は 1074、キャンセルされたスケジュールされたシャットダウンの場合は 1075、Windows ログ/システムでは 12 システムの起動では 13 システムのシャットダウンでは (すべて Windows ログ/システムの下)
私はバッチファイルでこれを行うのが面倒でしたが、それが可能であることは知っています.
それで、これが私がやったことです。シャットダウンをスケジュールするのではなく、中止してみてください。シャットダウンが進行中でない場合、エラーがスローされます (シャットダウンが進行中でないため、システムのシャットダウンを中止できません (1116))。シャットダウンをスケジュールしてユーザーを驚かせるよりはずっといいと思います。
これは、単純な自動シャットダウン スクリプト用に書いたコードのコピーです。スケジュールされたシャットダウンのキャンセルと開始を切り替えます。
@echo off
shutdown /a
if errorlevel 1 call:shutdown
goto end
:shutdown
set /p choice=Shutdown in how many minutes?
set /a mod=60
set /a mod*=%choice%
shutdown /s /t %mod%
:end
編集- 追加する情報があるため、この回答を再検討しています。
上記のソリューションは、shutdown.exe コマンドで /t 引数を使用してシャットダウンがスケジュールされているかどうかを検出します。
Windows がシャットダウンをスケジュールしているかどうかを判断する必要がある場合 (いくつかの Windows Update の後に自動的にシャットダウンするため)、照会できるレジストリ エントリが設定されています。以下は PowerShell の場合ですが、バッチ ファイルを記述して同じことを行うことができます。
Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
注: shutdown.exe を使用してスケジュールされた再起動の場合、これは true を返しません。Windows がコンピューターを再起動する必要があると通知した場合にのみ true を返します。