Microsoft社が提供するクラウドベースのデバイス管理サービス「Microsoft Intune」における、Windows PCの定期再起動の設定例を紹介します。デバイス構成ポリシーの設定カタログ(Reboot CSP)による設定と、タスクスケジューラーへの再起動タスク追加のスクリプト(PowerShell)登録の二種類を取り上げます。
・操作環境:
・OS:Windows 11
・Webブラウザー:Edge
・使用プラン:Microsoft 365 Business Premium
・管理デバイス環境:Windows 11
- この記事で紹介する二種類の設定方法について
- 方法1.MS Intune管理センターでデバイス構成ポリシーを設定する
- 方法1.対象デバイスで動作確認する
- 方法2.PowerShellを用意する
- 方法2.MS Intune管理センターでPowerShellを登録する
- 方法2.対象デバイスで動作確認する
- おわりに
この記事で紹介する二種類の設定方法について
この記事で紹介する二種類の設定方法について説明します。
- 方法1) デバイス構成ポリシーの設定カタログによる設定
スケジューリングにはシングル(一度きり)、DailyRecurrent(日次)、WeeklyRecurrent(週次)の三種類があります。週次はWindows Insider Programへの参加が必要ですが、私が試した環境では参加登録が正常に進まず、検証できていません(ごめんなさい)。今回は日次の設定だけ取り上げます。 - 方法2) タスクスケジューラーへの再起動タスク追加のスクリプト登録
方法1で週次の設定検証ができなかった代案として、タスクスケジューラーに週次再起動のタスクを登録するPowerShellを用意し、それをIntuneに登録する方法を紹介します。Windows Insider Programに参加したくないけれど(検証環境ならともかく、運用環境ですと躊躇いますよね)、週次再起動は実施したいという方向けです。
以下は参考情報です。
- Windows Insider Programの公式サイト:The Windows Insider Program
- Reboot CSPに関する公式記事:Reboot CSP | Microsoft Learn
- PowerShellによるタスクスケジューラー登録に関する公式記事:
ScheduledTasks Module | Microsoft Learn
方法1.MS Intune管理センターでデバイス構成ポリシーを設定する
WebブラウザーよりMicrosoft Intune管理センターにアクセスし、左メニューの[デバイス]を選択し、サブメニューの[デバイスの管理>構成]を選択し、[作成>新しいポリシー]を選択します。
※Microsoft Intune管理センター:Microsoft Intune admin center
以下の通り設定し、[作成]、[次へ]を選択します。
・プラットフォーム:Windows10以降
・プロファイルの種類:構成カタログ
・名前:(タスクの概要が分かる名前を適宜設定)
[設定の追加]を選択します。[設定ピッカー]画面上部の検索欄に[reboot]と入力し、[再起動]を選択し、表示された設定名すべてにチェックをつけ、右上の[×]を選択します。
以下の通り設定し、[次へ]を選択します。
・定期的に毎日:2024-11-07T15:00:00+09:00
※2024年11月7日の日本時間15時から毎日再起動を実施する、という内容です
※日本時間は世界標準時より9時間進んでいるため、後ろに+09:00を記述します
※週次と日次の同時適用はできません(両方の値を設定するとエラーが発生します)。分かりやすくあえて両方の項目を選択し、一方の値を空欄にすることで、同時適用の状態にならないようにしています
[次へ]を選択します。
[包含されたグループ]の[グループの追加]を選択し、再起動の対象としたいデバイスグループにチェックをつけ、[選択]ボタンを押します。
元の画面で[次へ]を選択します。
なお、再起動の対象としたいデバイスグループがない場合は、Microsoft Intune管理センターの左メニューの[グループ]から作成しておきます。
設定内容を確認し、問題なければ[作成]を選択します。
デバイス構成ポリシーの一覧画面が表示されたら、[最新の情報に更新]を選択します。
先ほど作成したポリシーが表示されたらこれを選択します。
暫く時間を置くと、適用状況が更新されます。
ちなみに、対象デバイスのIntune管理ポータルアプリにて[同期]を行うと、早く反映されるように思います。
方法1.対象デバイスで動作確認する
適用に成功した対象デバイス上で、スケジュールした日時になると、画面のようなメッセージが表示されます。[閉じる]を選択すると、すぐに再起動が開始されます。
ユーザーPCに適用する場合は、作業中ですとファイルを保存する猶予がないため、時間になったら強制的に再起動する旨を周知徹底する必要がありそうです。
再起動のスケジュールは、対象デバイスのタスクマネージャーの以下に登録されています。
\Microsoft\Windows\EnterpriseMgmt\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\Reboot
ちなみに、前の工程で設定した構成ポリシーのこの設定を空白に変更し、適用に成功すると、タスクマネージャーのこの再起動タスクが削除されます。
方法2.PowerShellを用意する
以下の通り、タスクマネージャーに週次再起動のタスクを登録するPowerShell(ps1ファイル)を用意します。
以下、ps1ファイルのソースです。
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Wednesday -At 18:00
#毎週水曜18時に実行
$Action = New-ScheduledTaskAction -Execute "shutdown" -Argument "-r -t 120 -f -c ""Restart after 2 minutes. Save and close the files."""
#2分後に再起動を実施
$Settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 30)
#30分以内にタスクが終了しない場合、自動でタスクを停止
Register-Scheduledtask -TaskPath "\" -TaskName "reboot weekly" -Action $Action -Trigger $Trigger -Force
#同じ名前のタスクが登録済の場合、上書き
Intuneへ登録する前に、以下コマンドにより、ps1ファイル単体で機能するか確認しておきます。
powershell –File reboot_weekly.ps1
※この例では、reboot_weekly.ps1というファイル名のPowerShellをCドライブ下のtempフォルダーに置き、それを実行しています
※再起動のタスクは[タスクスケジューラライブラリ]の直下に作成されています
方法2.MS Intune管理センターでPowerShellを登録する
Microsoft Intune管理センターの左メニューの[デバイス]を選択し、サブメニューの[デバイスの管理>スクリプトと修復]を選択し、[プラットフォームごとのスクリプト>追加>Windows10以降]を選択します。
スクリプトの概要が分かる名前を適宜入力し、[次へ]を選択します。
前の工程で用意したスクリプトを選択し、[スクリプト署名チェックを強制]を[いいえ]に変更し、[次へ]を選択します。
[組み込まれたグループ]の[グループの追加]を選択し、再起動の対象としたいデバイスグループにチェックをつけ、[選択]ボタンを押します。
元の画面で[次へ]を選択します。
なお、再起動の対象としたいデバイスグループがない場合は、Microsoft Intune管理センターの左メニューの[グループ]から作成しておきます。
設定内容を確認し、問題なければ[追加]を選択します。
暫く時間を置くと、適用状況が更新されます。
ちなみに、誤りを含むスクリプトをIntuneに登録した場合、Intuneの画面上に適用の失敗が表示され、対象デバイスへのタスク追加も行われません。
Intuneの画面上では失敗の詳細が分からないため、前の工程で実施した通り、事前にスクリプト単体で実行しエラーがないことを確認した方が良いです。
方法2.対象デバイスで動作確認する
適用に成功した対象デバイス上で、スケジュールした日時になると、画面のようなメッセージが表示されます。
PowerShellで設定した通り、二分後に再起動が開始されます。その前に作業中のファイルの保存等の操作はできます。
おわりに
二種類の方法を紹介しましたが、どちらもIntuneを使ってタスクマネージャーに再起動タスクを追加する形になります。
日次の再起動で、再起動までの猶予が不要であれば方法1(デバイス構成ポリシー)が手軽です。また、方法1による週次再起動は、2024年11月時点ではWindows Insider Programでの提供となっており、今後正式リリースされたり仕様が変わったりするかもしれません。
日次以外のスケジュールで再起動したい・再起動が開始される前にファイルを保存する猶予を持たせたい場合は、方法2(PowerShell)で対応する方が良いと思います。