PowerShellスクリプトを実行しようとした際にエラーが発生したり、スクリプトが実行されないことがあります。この記事では、PowerShellスクリプトが実行できない場合のよくある原因とその対処方法について解説します。
エラーメッセージの例
以下のようなエラーメッセージが表示される場合があります。
.\test.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:test\test.ps1 を読み込むことができませ
ん。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\test.ps1
+ ~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
実行ポリシーの確認と変更
PowerShellにはスクリプトの実行を制御する実行ポリシーがあります。デフォルトではスクリプトの実行が制限されていることがあります。
実行ポリシーの確認
Get-ExecutionPolicy
実行ポリシーの変更
以下のコマンドを管理者権限で実行して、実行ポリシーを変更します。
Set-ExecutionPolicy RemoteSigned
- RemoteSigned: ローカルで作成したスクリプトを実行可能にし、インターネットからダウンロードしたスクリプトには署名を必要とします。/li>
- Unrestricted: すべてのスクリプトを実行可能にしますが、セキュリティ上のリスクがあるため注意が必要です。
管理者権限でPowerShellを実行
スクリプトが管理者権限を必要とする操作を含んでいる場合、管理者としてPowerShellを実行する必要があります。
- スタートメニューで「PowerShell」と検索。
- 「Windows PowerShell」を右クリックし、「管理者として実行」を選択。
ファイルパスの確認
スクリプトファイルのパスが正しいか確認します。特にスペースや特殊文字が含まれている場合、正確に指定する必要があります。
& "C:\Path\To\Your Script.ps1"
スクリプトの内容の確認
スクリプト自体にエラーがないか確認します。特にスクリプトの先頭にあるシェバン行や、不正な構文が原因でエラーが発生することがあります。
スクリプトの先頭に以下を追加することで、デバッグメッセージを有効にできます。
$ErrorActionPreference = "Stop"
ファイルのアンブロック
インターネットからダウンロードしたスクリプトはブロックされることがあります。ファイルを右クリックし、プロパティを開き、「ブロックの解除」オプションを選択します。
PowerShellでも、以下のコマンドでスクリプトをアンブロックすることができます。
Unblock-File -Path "C:\Path\To\Your Script.ps1"
パスの信頼性
ネットワークドライブやリモートファイルパスから実行する場合、信頼性の問題が発生することがあります。ローカルにコピーしてから実行してみてください。
スクリプトの拡張子の確認
スクリプトファイルが正しい拡張子 .ps1 を持っていることを確認してください。
まとめ
これらの対策を試すことで、多くの場合、PowerShellスクリプトの実行問題を解決することができるはずです。具体的なエラーメッセージに基づいてさらに詳細なトラブルシューティングを行うことも重要です。