Amazonで商品を見るセール会場へ

Windows|サインイン時・終了前にメッセージを表示する方法

予定や保存確認を表示したい場合は、メッセージ表示とPCを終了する操作を分けます。

本稿のPowerShellは表示だけで、シャットダウンや再起動は実行しません。

目次

メッセージを表示するタイミングと準備

表示の確認からタスク登録へ進む手順です。

お使いのWindowsのエディションや管理者の設定によって、使える方法が異なることがあります。

  1. まず、表示したいタイミングを決める。サインイン後に予定を出したいのか、終了前に保存確認を出したいのかで、使う方法が変わる。
  2. 練習ZIPのReminder.ps1を新しいフォルダーに置き、同じユーザーでメッセージの表示を手動で確認する。
  3. サインイン後に表示する場合は、タスクスケジューラで「ログオン時」のタスクを作り、本人の画面に出ることを「実行」で先に確認する。
  4. PowerShellが実行ポリシーで止まる場合は、手順を続けず、管理者に確認する。Bypassなどで回避しない。
  5. 終了前の確認には、手動で開く「終了前チェック」のショートカットを使う。シャットダウンスクリプトは本人への保存確認には適さない。
  6. 不要になったときの、表示の止め方と元へ戻し方を、先に確認しておく。

手動のショートカットはグループポリシーエディターを使いません。

Homeを含む各エディションでの実表示は未検証です。

スポンサーリンク

サインイン時と終了前の表示を分ける

目的操作適用範囲
サインイン後の予定ログオン時のタスク対話中の本人に表示
作業終了前の保存確認メモを手動実行閉じた後に電源メニューへ
終了する全場面を監視この例の対象外更新・別アプリの終了は捕捉しない

終了前の例は手動で開くメモです。

Windowsの電源ボタンや更新による終了を自動で横取りし、保存を保証する仕組みではありません。

終了処理を含まないPowerShellの作業メモ

練習ZIPのReminder.ps1を新しいフォルダーに置きます。

Windows PowerShell 5.1で日本語を読み込むため、配布ファイルはUTF-8のBOM付きで保存しています。

param(
    [ValidateSet('SignIn','BeforeExit')]
    [string]$Mode = 'SignIn',
    [switch]$Preview
)
$messages = @{
    SignIn = '今日の予定を確認してください。'
    BeforeExit = '作業を保存し、保存先を確認してからWindowsの電源メニューで終了してください。'
}
$message = $messages[$Mode]
if ($Preview) {
    [PSCustomObject]@{ Mode = $Mode; Message = $message; ShutdownExecuted = $false }
    return
}
Add-Type -AssemblyName PresentationFramework
[void][System.Windows.MessageBox]::Show($message, '作業メモ')
# メッセージ表示だけ。シャットダウン・再起動は実行しない。

最初はコードを通常のPowerShell入力として実行し、Previewを指定してメッセージの内容だけを確認します。

SignInなら予定確認、BeforeExitなら保存確認となり、ShutdownExecutedはFalseです。

ファイル実行が許可されている環境では、powershell.exe -NoProfile -STA -File "C:\cgm-startup-practice\Reminder.ps1" -Mode BeforeExit -Previewで内容を確認できます。

実際の展開先へパスを置き換えてください。

Previewを外すと、メッセージを表示します。

本記事で実際に実行して確認したのは、同じコードを PowerShell の画面に直接入力した -Preview の動作までです。

検証に使った PC ではファイル(ps1)の実行が実行ポリシーで止まるため、タスクスケジューラからの登録・サインイン時の実際のポップアップ表示は確認できていません。

2026年10月24日の再確認も、本文・配布スクリプト・公式仕様の照合であり、ログオン時の実表示は未検証です。

お使いの PC でも ps1 の実行が止まる場合は、次の順に切り分けてください。

実行ポリシーの変更は PC の管理方針に関わるため、会社の端末では管理者に確認してから行ってください。

  1. まず Get-ExecutionPolicy -List とエラー全文を確認する。管理された端末では、スクリプトを直接貼り付けて回避せず管理者へ相談する
  2. 直接入力したコードが動いた場合も、ファイルの実行許可・署名・文字コード・引数・実行ユーザーの違いを分けて調べる。原因を一つに断定しない
  3. 実行が許可された環境でのみ、まず -Preview で内容を確認し、続いて表示を試す

サインイン時のタスクを設定する場合

まず同じユーザーでメッセージ表示を手動確認します。

PowerShellが実行ポリシーで止まる場合は、この手順を続けず管理者へ確認し、Bypassなどで回避しません。

タスクスケジューラで「タスクの作成」を選び、名前をCGM作業メモなどにします。

全般で本人を指定し、「ユーザーがログオンしているときのみ実行する」を選びます。

トリガーは「ログオン時」で本人だけを対象にします。

操作のプログラムにはWindows PowerShellの実在するpowershell.exeを選び、引数は次の形にします。

-NoProfile -STA -File "C:\cgm-startup-practice\Reminder.ps1" -Mode SignInのパスを自分の展開先に置き換えます。

最上位の特権やシステムユーザーは使わず、タスクの「実行」で本人の画面へ出ることを先に確認します。

タスクが成功扱いでも、別セッションで起動すれば本人に画面が見えない場合があります。

実際のログオン、手動実行、タスク履歴をそれぞれ確認し、この記事の検証済み結果とは区別してください。

黒いコンソールを出さないための引数

タスクスケジューラの[操作]で powershell.exe を呼ぶとき、引数の付け方で表示の挙動が変わります。

Microsoft のドキュメントに記載されているパラメーターは次のとおりです(about_PowerShell_exe)。

引数公式ドキュメントの説明この用途での狙い
-WindowStyle Hidden「セッションのウィンドウ スタイルを設定します。有効な値は、Normal、Minimized、Maximized、および Hidden です。」PowerShell 自体のウィンドウを隠す
-File <パス>スクリプトファイルを実行する。後ろにはファイルパスと、そのスクリプトに渡す引数を指定するPowerShell本体のオプションは前に置く。-Mode BeforeExit などスクリプト用の引数はパスの後ろに置く
-NoProfile「PowerShell プロファイルを読み込みません。」起動を軽くし、プロファイルの影響を受けない
-Sta「シングルスレッド アパートメントを使用して、PowerShell を起動します。」(Windows PowerShell 3.0 以降は既定)ダイアログ表示の前提をそろえる
-ExecutionPolicy <値>「現在のセッションの既定の実行ポリシーを設定し、$Env:PSExecutionPolicyPreference 環境変数に保存します。このパラメーターは、レジストリに設定されている PowerShell 実行ポリシーを変更しません。」本記事の実行例では指定しない。組織のポリシーを無断で変更しない

タスクスケジューラの[操作]欄の書き方は次のようになります。

  • プログラム/スクリプト:powershell.exe
  • 引数の追加:-NoProfile -WindowStyle Hidden -Sta -File "C:\Scripts\Reminder.ps1"

-File より後ろに書いた値はスクリプトへの引数として解釈されるため、-WindowStyle Hidden は -File より前に置きます。

順番を逆にすると、引数として渡ってしまい効きません。

あわせて、タスクのプロパティ側も確認します。

  • [全般]タブの「ユーザーがログオンしているときのみ実行する」を選ぶ(ダイアログを画面に出すため)
  • 「最上位の特権で実行する」は、必要がなければオフのままにする
  • [条件]タブの電源関連の条件は、ノートPCで動かないときの確認先になる

実行ポリシーでps1が止まる場合は、エラーと設定を記録して管理者へ確認してください。

直接入力で動いたことだけでは、ファイル実行やタスク登録の許可・動作を確認したことにはなりません。

shutdownの待ち時間は保存確認にならない

以前の例はshutdownで60秒待ち、保存を促すメッセージを表示していました。

Microsoftの仕様では、待ち時間が0より大きいとアプリの強制終了が暗黙に有効になります。

したがって、待ち時間やコメントだけで未保存データの保護はできません。

本稿では終了予約を作るコマンドを練習例にせず、手動の保存確認と電源メニューを分けています。

既に終了予約を開始した場合は、待ち時間内に別のコマンドプロンプトでshutdown /aを実行すると取り消せます。

予約がない場合や時間切れでは取り消せないため、確認用として終了予約を作らないでください。

保存確認にシャットダウンスクリプトを使わない理由

Microsoft のドキュメントでは、ローカルグループポリシーエディターで4種類のスクリプト(コンピューターの起動・シャットダウン、ユーザーのログオン・ログオフ)を割り当てられるとされています。

シャットダウンスクリプトの場所は コンピューターの構成\Windows の設定\スクリプト (スタートアップ/シャットダウン) です(Microsoft Learn)。

ただし、この方法を保存確認の目的に使うことはおすすめしません。

同じドキュメントに次の制約が明記されています。

  • シャットダウンスクリプトは Local System として実行される(サインイン中のユーザーのデスクトップとは別の文脈で動く)
  • スクリプトを同期実行に設定すると、シャットダウンの処理が遅くなる
  • 参照先はWindows 7/Server世代の資料であり、Professional / Ultimate / Enterpriseという表記を現在のWindowsのエディション一覧とは扱わない

つまり「終了を止めて、ユーザーに保存を促して、返事を待つ」という用途には設計が合っていません。

ファイル実行が許可された環境で「終了前チェック」を作る

OS の終了処理に割り込むのではなく、自分がその入口を使うようにするのが現実的です。

本記事のスクリプトは表示だけで終了処理を含まないため、次の形で運用できます。

  1. デスクトップに新しいショートカットを作る(右クリック →[新規作成]→[ショートカット])
  2. 項目の場所に次を入れる
    powershell.exe -NoProfile -WindowStyle Hidden -Sta -File "C:\Scripts\Reminder.ps1" -Mode BeforeExit
  3. 名前を「終了前チェック」などにして、アイコンを分かりやすいものに変える
  4. 帰るときはこのショートカットを開き、表示されたメモを見てから、保存して自分で終了する

メモを閉じた後、各アプリで保存先と保存状態を確認してください。

保存の判断と終了操作は利用者が行います。

注意:Windows の電源ボタン、スタートメニューからの終了、更新による再起動は、この方法では捕まえられません。

「終了前に確認させる」仕組みではなく、「確認してから終了する習慣のための入口」です。

表示を止める・元へ戻す

メッセージを閉じれば、このスクリプト自体は終了します。

作成したタスクを止める場合は、その名前を確認して無効化し、既存の別タスクは変更しません。

使う前のXMLエクスポートや設定記録がある場合は、それと照合して戻します。

この作業ではタスク作成・ログオン・シャットダウンを実施しておらず、それらの動作は未検証です。

常駐アプリの見直しはNVIDIAの自動起動の記事、キーから練習処理を呼ぶ場合はAutoHotkey v2の記事を参照してください。

  • 一時的に止める:タスクスケジューラで対象のタスクを右クリック →[無効]。設定は残るので、同じ場所で[有効]に戻せます。
  • 完全に消す:同じメニューの[削除]。削除すると設定は戻せないため、[操作]タブの内容(プログラムと引数)を控えてから消します。
  • ショートカットをやめる:デスクトップのショートカットを削除します。スクリプト本体(ps1)は残るので、使うのをやめるだけならショートカットの削除で十分です。
  • 何も設定を変えていないことを確認したい:本記事のスクリプトは表示だけで、レジストリや電源設定を変更しません。やめるときに元へ戻す作業は、タスクとショートカットの削除だけです。

関連するWindows操作と従来の参考資料

以前の関連記事と外部コードの参照先です。

旧コードと本稿の練習ファイルは内容が異なるため、今回の手順では本稿のファイルを使います。

スポンサーリンク

まとめ:表示と終了操作を分けて確認する

手動表示、タスクの実行、実際のサインインの順に確認します。

表示されない場合はエラーと実行ユーザーを記録し、既存タスクを変えずに原因を切り分けてください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

仕事効率化のおすすめ書籍

仕事用PCの選び方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次