ノートPCを充電器に挿した瞬間だけ、黒い画面の PowerShell ウィンドウがパッと開いて消えたり、しつこく表示されて困っていませんか。ウイルスかと心配になる方も多いですが、多くの場合は「電源(AC)接続時だけ動くタスクや常駐ソフト」が原因です。この記事では、クリーンブート・タスク スケジューラ・スタートアップ・イベントログを使って、犯人を再現性高く特定し、二度と勝手に PowerShell を開かせないための実践的な手順を詳しく解説します。
充電したときだけ PowerShell が勝手に開くのはなぜか
この現象のポイントは「充電器(AC)を挿したタイミングでのみ」PowerShell の黒いコンソール画面が表示されることです。常に出ているわけではなく、バッテリー駆動中は何も起きないケースが大半です。
これは多くの場合、次のような仕組みが原因になっています。
- メーカー製の電源管理ツールやアップデートツールが、「AC電源接続時のみ実行」という条件でスクリプトを動かしている
- バックアップ・同期ソフトなどが電源接続時にだけ処理を走らせ、その中で PowerShell を利用している
- 社内配布スクリプト・自作スクリプトをタスク スケジューラで「AC電源でのみ実行」にしている
- まれに、広告系ソフトやマルウェアが PowerShell 経由で処理を行っている
重要なのは、PowerShell 自体は「ただの実行エンジン」であり、PowerShell を起動する「何か別のもの」が必ず存在するという点です。この記事では、その「誰が PowerShell を呼び出しているのか」を特定する流れにフォーカスします。
| 原因候補 | 特徴 | 主な確認場所 |
|---|---|---|
| メーカー製ユーティリティ (電源管理・アップデーター) | AC接続時やバッテリー充電しきい値などに反応して動く | タスク スケジューラ、常駐アプリ設定画面 |
| バックアップ・同期ソフト | 電源接続時・アイドル時のみバックアップを開始 | タスク スケジューラ、スタートアップ |
| 社内・自作スクリプト | ログオン時や電源接続時に PowerShell スクリプトを実行 | タスク スケジューラ、スタートアップ、グループポリシー |
| 広告系・悪質ソフト | 意図しないタイミングで PowerShell が開く、内容が不明 | タスク スケジューラ、スタートアップ、ウイルス対策ソフト |
対処の全体像:やみくもに消さず、原因から潰す
「とりあえず PowerShell を無効化する」「黒い画面が出たらすぐ閉じる」といった対処はおすすめできません。PowerShell を使っているのが大事なバックアップ処理かもしれませんし、本当に怪しい動きなら元から断つ必要があります。
効率よく、かつ安全に対処するための全体フローは次のようになります。
- クリーンブートで常駐ソフトやタスクが原因かどうかを切り分ける
- タスク スケジューラでPowerShell を呼び出しているタスクを探す
- スタートアップ・ログオンスクリプト・レジストリから自動起動の仕組みを確認する
- イベント ビューアーやタスク マネージャーで発火元・親プロセスを特定する
- 見つかった原因ごとに、無効化・設定変更・非表示実行化などの対処を行う
- 必要に応じてウイルススキャン・新規ユーザー・セーフモード等で追加切り分けを行う
| ステップ | 目的 | 結果から分かること |
|---|---|---|
| クリーンブート | サードパーティ要因かどうかを判定 | 再現しない → 常駐/タスクが原因の可能性大 |
| タスク スケジューラ調査 | AC電源時に動くタスクを洗い出す | PowerShell を実行するタスクを特定 |
| スタートアップ等の確認 | ログオン時などに動くスクリプトを発見 | 不要な自動起動を無効化 |
| イベントログ・親プロセス | 「いつ」「誰が」タスクを動かしたかを確認 | 犯人アプリ/タスクをピンポイントで特定 |
クリーンブートで原因を大まかに切り分ける
まずはクリーンブートで、Windows 本体側の問題なのか、サードパーティの常駐ソフト・タスクが問題なのかを切り分けます。ここは受け入れられた回答でも中核となる手順です。
クリーンブートの手順(Windows 10 / 11 共通)
- Windowsキー + R を押し、
msconfigと入力して Enter(システム構成が開きます)。 - [サービス] タブを開き、[Microsoft のサービスをすべて隠す] にチェックを入れます。
- 残ったサービス一覧で、[すべて無効] をクリックします。
- [スタートアップ] タブを開き、[タスク マネージャーを開く] をクリックします。
- タスク マネージャーの [スタートアップ] タブで、不要と思われる項目(特にメーカー製ユーティリティやツール類)を一旦すべて [無効] にします。
- PC を再起動し、再起動後に充電器を挿したとき、PowerShell が開くかどうかを確認します。
ここで現象が出ない場合は、無効化したサービスやスタートアップ項目のどれかが犯人です。効率よく特定するには、次のような「二分探索」を行います。
- 無効にした項目を半分だけ元に戻す(有効化して再起動)
- AC 接続して再現するか確認
- 再現したら「今戻したグループの中」に原因がある → そのグループをさらに半分に分けて同じことを繰り返す
- 再現しなければ「残り半分のグループ」に原因がある → そちらを半分に分けて検索
この方法であれば、項目が多くても数回の再起動で原因をほぼ特定できます。クリーンブートでも PowerShell の黒い画面が出る場合は、Windows 標準のタスクやドライバー・セキュリティ関連が関わっている可能性が高くなります。
タスク スケジューラで「PowerShell を呼んでいるタスク」を探す
ノートPCを充電したタイミングで動く処理は、タスク スケジューラに登録されていることが多いです。ここでは、PowerShell を直接または間接的に起動しているタスクを探します。
タスク スケジューラ(GUI)での確認
- [スタート] メニューで「タスク スケジューラ」と検索して起動します。
- 左ペインの[タスク スケジューラ ライブラリ]配下を、フォルダーごとに順番に選択します。
- 中央のタスク一覧で、次のようなタスクを重点的に見ます。
- [トリガー] 欄に 「ログオン時」、「イベント発生時」、電源関連の条件が含まれているもの
- [条件] タブで、「AC 電源でのみタスクを開始する」 や 「コンピューターがバッテリ電源に切り替わった場合はタスクを停止する」 などのチェックが入っているもの
- 怪しそうなタスクをダブルクリックし、[アクション] タブを確認します。
- [プログラム/スクリプト] または [引数の追加] に、次のような文字列が含まれていないかチェックします。
powershell.exepowershellpwsh(PowerShell 7 系)
- 明らかに不要なタスクであれば[無効]にします。意味がわからないタスクは、すぐ削除せず、タスク名や発行元を調べてから判断するようにしましょう。
「動いていても問題はないが、黒い画面だけ何とかしたい」という場合は、アクションの引数に -WindowStyle Hidden を付けておくことで、ウィンドウを表示せずにバックグラウンドで実行できます。
例:
powershell.exe -WindowStyle Hidden -File "C:\Scripts\MyScript.ps1"
PowerShell でタスクを一括検索する
タスクが多すぎて GUI で一つずつ確認するのが大変な場合は、管理者権限の PowerShell から次のコマンドで「PowerShell をアクションとして含むタスク」を一覧できます。
Get-ScheduledTask |
Where-Object { $_.Actions | ForEach-Object { $_.Execute + ' ' + $_.Arguments } -match 'powershell(\.exe)?' } |
Select-Object TaskName,TaskPath,State,
@{Name='Trigger';Expression={ ($_.Triggers | ForEach-Object { $_.ToString() }) -join '; ' }},
@{Name='Action'; Expression={ ($_.Actions | ForEach-Object { $_.Execute + ' ' + $_.Arguments }) -join ' ' }}
コマンド実行後に表示される一覧から、タスク名・トリガー・アクションを確認し、AC 電源接続時に動きそうなタスクを重点的にチェックします。
コマンドプロンプトから簡易検索する方法
PowerShell ではなくコマンドプロンプトで調べたい場合は、次のコマンドでも簡易的な検索ができます。
schtasks /query /v /fo LIST | findstr /i powershell.exe
こちらは一覧から文字列検索するだけですが、「どこかに PowerShell を呼び出すタスクがあるかどうか」をざっくり確認するのに便利です。
スタートアップ・ログオン スクリプト・レジストリを確認する
タスク スケジューラに原因が見当たらない場合は、スタートアップやレジストリによる自動起動を確認します。特に「ログオン時に PowerShell を起動し、バッテリー状態を監視している」といったスクリプトがあると、充電器を挿した瞬間に処理が動き出すことがあります。
スタートアップ フォルダー(ユーザー/全ユーザー)
PowerShell のショートカットやバッチファイルがスタートアップに登録されていないか確認します。
- Windowsキー + R →
shell:startup(現在ログオンしているユーザー用) - Windowsキー + R →
shell:common startup(すべてのユーザー共通)
開いたフォルダー内に、次のようなショートカットやスクリプトがないかチェックします。
PowerShellのショートカット.ps1を実行するためのショートカット.batや.cmdからpowershell.exeを呼び出しているもの
不要なものは削除するか、デスクトップなど別の場所に退避しておきましょう。
レジストリによる自動起動(上級者向け)
レジストリには、ログオン時に自動実行するアプリケーションが登録されていることがあります。編集を誤るとシステムに影響が出るため、バックアップや復元ポイントを取った上で慎重に操作してください。
代表的なキーは次の2つです。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
ここに powershell.exe や PowerShell スクリプトを呼ぶパスが登録されていないか確認します。よく分からない項目はすぐに削除せず、名前で検索して正体を調べた上で判断しましょう。
イベント ビューアーで「発火したタスク」を時刻から突き止める
「充電した瞬間に PowerShell が開いたのはわかるけれど、どのタスクが動いたのか分からない」という場合は、イベント ビューアーでタスク スケジューラのログを追うと有効です。
TaskScheduler/Operational ログを有効化する
- [スタート] メニューで「イベント ビューアー」と検索し、起動します。
- 左ペインから [アプリケーションとサービス ログ] → [Microsoft] → [Windows] → [TaskScheduler] → [Operational] を選びます。
- まだ有効になっていない場合は、右ペインの [ログの有効化] をクリックします。
PowerShell が開いたタイミング前後のログを見る
- PowerShell の黒い画面が出るタイミング(充電器を挿す瞬間)をメモしておきます。
- その直後にイベント ビューアーを開き、TaskScheduler/Operational のログを時刻順に確認します。
- 次のイベント ID を中心にフィルターをかけると見やすくなります。
- 100 / 102 … タスクの開始 / 完了
- 200 / 201 … アクションの開始 / 完了
- 該当時刻に発生したイベントから、どのタスク名が動き、どのアクション(プログラム)が実行されたかを特定します。
ここで「タスク名」と「実行ファイル名(powershell.exe)」がセットで確認できれば、タスク スケジューラ側で該当タスクを開き、無効化や設定変更が行えます。
タスク マネージャーで親プロセスを確認する
PowerShell のウィンドウが開いた瞬間に、タスク マネージャーから「どのプロセスから生まれたのか」=親プロセスを確認する方法もあります。
- PowerShell の黒い画面が表示されたら、すぐに Ctrl + Shift + Esc でタスク マネージャーを開きます。
- [詳細] タブを開き、一覧から
powershell.exeもしくはpwsh.exeを探します。 - 列の見出し部分を右クリックし、[列の選択] から [親プロセス] や [コマンド ライン] を表示させます。
- 親プロセス列に表示されているプロセス名(例:メーカー名や特定アプリ名)をメモし、そのアプリの設定やタスクを調べます。
これにより、「タスク スケジューラではなく、特定アプリ内の機能として PowerShell が呼び出されている」というケースも切り分けることができます。
見つかった原因ごとの具体的な対処法
調査の結果、「誰が PowerShell を起動しているか」が分かったら、原因に応じて適切に対処します。
| 原因タイプ | 推奨対処 | 注意点 |
|---|---|---|
| 不要/不明なタスク | タスク スケジューラで無効化または削除 | 削除前にタスク名・パスをメモし、問題が起きたら戻せるようにする |
| メーカー製電源管理ソフト | アプリ内設定で「電源接続時の自動メンテナンス」等をオフにする もしくはタスクのアクションを -WindowStyle Hidden 付きに変更 | バッテリー保護や最適化機能まで一緒にオフにしないよう項目をよく確認する |
| バックアップ/同期ソフト | 電源イベントをトリガーにしない設定に変更するか、非表示実行に変更 | バックアップそのものを無効にするとデータ保護が弱くなる点に注意 |
| 社内・自作スクリプト | スクリプトの実行は残しつつ、-WindowStyle Hidden でウィンドウを出さないようにする | 隠し実行にすると動いていることに気付きにくくなるため、ログ出力なども用意しておく |
| 広告系・悪質ソフト | Windows セキュリティ(Defender)や他社製ウイルス対策ソフトでフルスキャンを実行し、検出物を駆除 | 怪しいツールを安易にインストールしない、管理者権限での実行を控えるなど再発防止も重要 |
セキュリティの観点:マルウェアの可能性もゼロではない
充電時だけ PowerShell が開くという症状の多くは正規のタスクやユーティリティが原因ですが、PowerShell はマルウェアにも頻繁に悪用されるツールです。「全く身に覚えがない」「メッセージ内容が怪しい」「スクリプトの場所が不自然」といった場合は、念のためセキュリティチェックも行っておきましょう。
Windows セキュリティ(Defender)でフルスキャン
- [スタート] → [設定] → [プライバシーとセキュリティ] → [Windows セキュリティ] を開きます。
- [ウイルスと脅威の防止] → [スキャンのオプション] を選びます。
- [フルスキャン] を選択し、[今すぐスキャン] をクリックします。
- 検出された項目があれば、指示に従って隔離・削除します。
会社支給の PC などで別のウイルス対策ソフトが入っている場合は、そちらの製品でフルスキャンを行ってください。検出名が不安な場合は、IT 部門やメーカーサポートに相談すると安心です。
それでも解決しない場合の追加切り分け
ここまでの手順を行っても原因が特定できない場合、次のような追加の切り分けを行うことで、問題が「ユーザーごと」「環境ごと」なのかを見極められます。
新しいローカルユーザーで再現するか確認
- 管理者権限のアカウントでサインインします。
- [設定] → [アカウント] → [家族とその他ユーザー] → [その他のユーザーをこの PC に追加] から、新しいローカルアカウントを作成します。
- 作成したアカウントでサインインし、充電器を挿して PowerShell が開くか確認します。
- 新しいユーザーでは再現しない → 元のユーザープロファイルに設定やスクリプトが残っている可能性が高い
- 新しいユーザーでも再現する → システム全体、もしくはタスク スケジューラの全体タスクが原因の可能性が高い
セーフモード(ネットワークあり)での確認
セーフモードでは最小限のドライバーとサービスだけが読み込まれるため、サードパーティの影響をさらに切り分けることができます。
- [設定] → [システム] → [回復] → [今すぐ再起動](詳細ブートオプション)を選びます。
- オプションから [トラブルシューティング] → [詳細オプション] → [スタートアップ設定] → [再起動] を選択します。
- 再起動後の一覧から [セーフモードとネットワークを有効にする] を選びます。
- セーフモードで起動した状態で充電器を挿し、PowerShell が開くか確認します。
セーフモードで再現しない場合は、やはり通常モードで読み込まれるドライバーやサービスに原因があると考えられます。
システム復元ポイントがあれば利用を検討
「最近になって突然現象が出るようになった」「どのタイミングからか分かっている」という場合、システム復元でその直前の状態に戻すのも一つの方法です。
- 復元ポイント作成時にインストールされていたアプリや設定は、その時点の状態に戻ります。
- 個人のドキュメントや写真などのデータは基本的に保持されますが、必ず重要データのバックアップを取ってから実行しましょう。
よくある疑問と回答
PowerShell のウィンドウだけ非表示にしても大丈夫?
タスクやスクリプト自体が正規のものであり、内容も把握している場合は、アクションに -WindowStyle Hidden を付けてウィンドウだけ非表示にする方法は有効です。ただし、処理が失敗していても気づきにくくなるため、ログファイル出力などの仕組みを併用するのがおすすめです。
PowerShell 自体をアンインストール・無効化した方が安全?
PowerShell は Windows の多くの機能やツールが利用している標準コンポーネントです。強引に無効化すると、正規の管理ツールやスクリプトが動かなくなり、かえってトラブルのもとになります。PowerShell を消すのではなく、PowerShell を呼び出している「犯人」を特定して対処するのが正しいアプローチです。
会社支給 PC で勝手に PowerShell が開く場合は?
社内システム部門が配布したスクリプトや運用タスクの可能性があります。勝手にタスクを削除したり設定を変更すると、セキュリティチェックやバックアップが動かなくなることもあるため、必ず IT 管理者に相談してから手を入れるようにしてください。
最終チェックリスト:これだけは確認しておこう
最後に、充電時に勝手に開く PowerShell ウィンドウを止めるためのチェックポイントを再整理しておきます。上から順に潰していくことで、ほとんどのケースで原因を特定できます。
- □ クリーンブートで再現するか確認した(再現しない → 常駐/タスクが原因の可能性大)
- □ タスク スケジューラで AC 条件のタスクと
powershell.exeアクションを確認した - □ PowerShell / コマンドプロンプトでタスク内の PowerShell 呼び出しを一括検索した
- □ スタートアップ フォルダーとレジストリの Run キーから、不要な PowerShell 呼び出しを排除した
- □ イベント ビューアー(TaskScheduler/Operational)で、現象発生時刻のタスク実行ログを確認した
- □ タスク マネージャーで
powershell.exeの親プロセスを確認し、元アプリを特定した - □ 必要に応じてタスクやスクリプトを
-WindowStyle Hiddenで非表示実行に切り替えた - □ Windows セキュリティ等でフルスキャンを行い、悪質ソフトの可能性を排除した
- □ 新しいユーザー・セーフモード・システム復元などで環境依存の切り分けを行った
この流れを踏めば、「充電すると PowerShell の黒い画面が勝手に開く」現象の多くは、スケジュールタスクや常駐アプリの AC 条件実行が原因であることを突き止め、適切に無効化・修正できます。黒い画面に驚かされることなく、安心してノートPCを充電できる環境を整えていきましょう。

コメント