PowerShell の障害をトラブルシューティングする方法
PowerShell が起動しない、あるいは正常に動作しないといった問題に対処するのは、時にイライラさせられるものです。単なる権限の問題である場合もあれば、ファイルの破損やポリシー制限など、より深刻な問題が原因の場合もあります。問題の原因が何であれ、このガイドは、たとえすべてが少し不安定に見えても、よくある問題のほとんどを解決するのに役立つはずです。コマンドラインを使ったり、設定を確認したり、場合によってはアップデートをダウンロードしたり、PowerShell 自体を再インストールしたりする必要があるかもしれません。最終的には、PowerShell は少なくとも正常に動作するようになるか、少なくともより適切なエラーメッセージが表示されるようになるはずです。
PowerShell が動作しない問題を修正するには?
適切な場所から管理者として PowerShell を実行する
多くの問題は権限不足や間違った場所から実行しようとしたことが原因で発生するため、これが最初のステップとなることがよくあります。Windowsエクスプローラーを開き、以下の場所に移動します。
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
powershell.exeを右クリックし、「管理者として実行」を選択します。これで問題が解決する場合は、権限の問題である可能性が高いです。多くの場合、この方法で起動するだけで「アクセス拒否」などのアクセスエラーを解決できます。特に、スクリプトの実行時や特定のコマンドの実行時に問題が発生する場合は有効です。
注: 32 ビット システムの場合、または 32 ビット バージョンの Windows を使用している場合は、パス内のsystem32 をsyswow64に置き換えます。
一部の設定では、この手順だけで PowerShell が再び応答するようになりますが、場合によっては、これが始まりに過ぎないこともあります。
Windowsの機能でPowerShellが有効になっているかどうかを確認する
PowerShell が途中で無効化された可能性があります。特に機能リストが変更された場合や、役割と機能を切り替えられるシステムを使用している場合は、その可能性が高くなります。次の手順に従ってください。
コントロールパネル > プログラム > Windowsの機能の有効化または無効化
Windows PowerShellを探し、チェックボックスがオンになっていることを確認してください。オフになっている場合はオンにして「OK」をクリックしてください。その後、Windows から再起動を求められる場合があります。再起動後、PowerShell を再度起動してみてください。無効になっているだけの場合は、これで十分な場合が多いです。
グループポリシーの制限またはレジストリブロックを修正する
「有効な制限により、この操作はキャンセルされました」などのエラーが表示される場合は、グループポリシーまたはレジストリ設定によってPowerShellが制限されている可能性があります。以下の点をご確認ください。
- を押してWin + R、
gpedit.mscと入力し、Enter キーを押します。 - [ユーザーの構成] > [管理用テンプレート] > [システム]に移動します。
- 「指定された Windows アプリケーションを実行しない」というポリシーを見つけてダブルクリックします。
- 有効になっている場合は、 [未構成]に設定するか、 powershell.exe を明示的に許可します。
- エディターを閉じて PC を再起動してください。場合によっては、このポリシー ロックアウトが原因となっていることがあります。
gpedit.msc にアクセスできない場合 (たとえば、Win 10 Home の場合) は、レジストリを直接調整するか、Winhanceなどのツールを使用してポリシーをリセットします。
スクリプトを許可するように実行ポリシーを調整する
実行ポリシーの制限が厳しすぎる場合、スクリプトを実行するとエラーが発生します。ポリシーを確認または変更するには、PowerShellを管理者として実行し、以下を実行してください。
Set-ExecutionPolicy RemoteSigned -Force -Scope LocalMachine
このコマンドは、多くのスクリプトに必要なローカルスクリプトと署名付きリモートスクリプトの実行を許可します。32ビット版と64ビット版のPowerShellを別々に実行している場合は、それぞれ個別に変更する必要があることに注意してください。
それでもスクリプトが実行されない場合は、次のコマンドで現在のポリシーを確認することもできます。
Get-ExecutionPolicy -List
ポリシーはデフォルトまたはグループポリシーによって設定されている場合もあるため、調整は慎重に行ってください。その後、PowerShellを再起動し、スクリプトが実行できるかどうかを確認してください。
PowerShellを再インストールまたは更新する
PowerShellが起動しない場合、または起動時にクラッシュする場合は、ファイルが破損している可能性があります。以下の手順でアップデートまたは再インストールをお試しください。
- 公式 GitHub リリースから PowerShell をダウンロードします。システム (x86 または x64) 用の最新の安定した MSI インストーラーを選択します。
- インストーラーを実行し、指示に従ってください。破損したファイルが上書きまたは置き換えられるはずです。
- クリーン インストールが役に立たない場合、または CLI を好む場合は、既存の PowerShell またはコマンド プロンプトからインストール コマンドを実行できます。
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
このスクリプトは最新のセットアップと修復の多くを自動化しますが、注意が必要です。これは Microsoft 製であり、一般的に安全です。
別のユーザーアカウントを試すか、管理者アカウントを有効にしてください
アカウント固有の不具合により、PowerShell がハングしたり起動しなくなったりすることがあります。コマンドプロンプト(管理者モード)で以下のコマンドを実行し、ビルトインの管理者アカウントを有効にしてください。
net user administrator /active:yes
または、lusrmgr.msc (ローカルユーザーとグループ)を開き、 「Administrator」をダブルクリックして、「アカウントが無効です」のチェックを外し、そのアカウントでログインします。そこでPowerShellをテストしてください。うまく動作する場合は、元のユーザープロファイルが破損しているか、構成が間違っている可能性があります。修復するか、新しいプロファイルに移行する必要があります。
クリーンブートを実行してバックグラウンドの競合をテストする
バックグラウンドアプリやサービスがPowerShellの動作を妨げる可能性があります。確認するには、クリーンブートを実行してください。
- を押してCtrl + Shift + Escタスク マネージャーを開き、[スタートアップ]に移動して、不要なプログラムをすべて無効にします。
- を押してWin + R、 と入力し
msconfig、Enter キーを押します。 - [サービス]タブに移動し、[Microsoft のサービスをすべて非表示にする]をオンにして、[すべて無効にする]をクリックします。
- 再起動してPowerShellをテストしてください。これで問題が解決したら、サービスを1つずつ再度有効化し、問題の原因を特定してください。
補足: サードパーティ製のウイルス対策ソフトウェアやバックアップ ツールが過剰に攻撃的になり、PowerShell をブロックすることがあるため、このテストはそれを切り分けるのに役立ちます。
システムユーティリティを使用してファイル破損を修復する
Windows ファイルは時々壊れますが、PowerShell も例外ではありません。SFC 、DISM、CHKDSKなどの組み込みツールを使用して、ディスクまたはシステムの整合性の問題を検出し、修復してください。
- 管理者としてコマンドプロンプトを開きます(Win + R入力して
cmd押しますCtrl + Shift + Enter)。 - ディスクチェックを実行:
chkdsk C: /f /x /rEnterキーを押します。再起動時に実行をスケジュールするかどうかを尋ねられたら、「はい」と答えます。 - システム ファイル チェッカーを実行します:
sfc /scannow— PowerShell コンポーネントを含むシステム ファイルをスキャンして修復します。 - 必要に応じて、DISM を実行してコンポーネント ストアを修復します
DISM /Online /Cleanup-Image /RestoreHealth。
ツールが正常に動作しない場合は、セーフモードで起動してスキャンを実行してください。簡単なファイル修復で問題が解決する場合もあります。
Windowsを更新する
PowerShellの問題は、Windowsのアップデート後に発生することがあります。特に、アップデートによって一部のコンポーネントが破損したり、構成が誤っていたりする場合は、その傾向が顕著です。Windowsではパッチによって不具合が発生することがあるのはご存じの通りです。手動でアップデートを確認することで、残存するバグを解決できる場合があります。
- [設定] > [Windows Update]を開きます。
- 「更新プログラムの確認」をクリックします。保留中の更新プログラムをダウンロードしてインストールし、再起動して再度テストします。
アップデート直後に問題が発生した場合は、新しいパッチを待ってください。Microsoft は、多くの場合、修正プログラムを迅速にリリースします。
PowerShell モジュールが動作しない問題を修正するには?
PowerShell自体は問題なく起動するが、特定のモジュールやスクリプトの動作が不安定な場合は、モジュールファイルが破損している可能性があります。モジュールは以下の場所に保存されます。
C:\Program Files\WindowsPowerShell\Modules
C:\Windows\System32\WindowsPowerShell\v1.0\Modules
更新または修復するには、これらのモジュールを更新またはアンインストールしてください。管理者PowerShellプロンプトから:
- 利用可能なモジュールを確認するには:
Get-Module -ListAvailable - 問題のあるモジュールが見つかった場合は、更新してみてください。
- モジュールをアンインストールするには、次のコマンドを実行します。
Update-Module -Name ModuleName
Uninstall-Module -Name ModuleName
それでも問題が解決しない場合は、モジュールを再インストールする必要があるかもしれません。モジュールフォルダを削除して再インストールするだけで、破損したファイルを削除できる場合もあります。
まとめ
- 実際の場所から PowerShell を管理者として実行します。
- Windows の機能またはグループ ポリシーで PowerShell が無効になっていないことを確認します。
- 実行ポリシーを確認し、スクリプトが実行されない場合は調整します。
- PowerShell が壊れている場合は更新または再インストールしてください。
- 別のユーザー アカウントを試すか、管理者アカウントを有効にしてプロファイルの問題をテストしてください。
- バックグラウンドの競合を排除するためにクリーン ブートを実行します。
- 破損を修正するには、SFC、DISM、CHKDSK などのシステム ユーティリティを使用します。
- Windows が最新であることを確認してください。パッチにより多数のバグが修正されます。
- モジュールの問題の場合は、影響を受けるモジュールを更新または再インストールしてください。
まとめ
PowerShell で問題が発生する原因は様々です。権限の問題、破損したファイル、制限的なポリシーのせいで問題が発生してしまうこともあります。このリストを確認すれば、原因を特定できる場合もあれば、より明確なエラーメッセージが表示され、トラブルシューティングを進めるための手がかりとなる場合もあります。Windows や PowerShell 自体を更新すれば解決するケースも少なくありませんが、誤ってポリシーが変更された場合は、ポリシーも確認することを忘れないでください。この情報が誰かの時間を節約し、あるいは少なくとも PowerShell がオンラインに戻り、本来の力を発揮できるようになることを願っています。