はじめに
今月参画した開発PJにPS1
ファイルがありました。ビルドのタイミングでPS1
スクリプトを実行する必要があったんですが、とあるエラーに止められてしまいました。実体としては5分くらいの調査&解消だったんですが、備忘録として記事を書いておきます。
こっそり躓いた話
前提の話
WIndows10で開発していまして、VSCodeのターミナルで発生&解消できました。
遭遇したエラー
リポジトリ内のPS1
スクリプトを実行すると下記エラーが発現しました。
PS (プロジェクトのパス)> .\sample.ps1 <...arguments>
.\sample.ps1 : ファイル(プロジェクトのパス)\sample.ps1 を読み込めません。
ファイル(プロジェクトのパス)\sample.ps1 はデジタル署名されていません。
このスクリプトは現在のシステムでは実行できません。
スクリプトの実行および実行ポリシーの設定の詳細については、「about_Execution_Policies」 を参照してください。
「デジタル署名」??「実行ポリシー」??
ぼんやりと「権限修正して解消しよー」と考えたんですが、chmod
が実行できないことに少し思考停止しました。(もしここで冷静にcacls
コマンドを使用していた場合だともっと頭がこんがらがってしまっていたかもしれません苦)
少し冷静になって(諦めて)エラー本文を読んでみると、PowerShellポリシーに反してPS1
ファイルを実行したことが原因のようです。
参考:about_Execution_Policiesについて
対処しました
エンジニア人生ここに来て初めてPowerShellボリシーの問題に遭遇しました。どうやら一時的にポリシーを変更するか該当ファイルに自己署名を付与するかのいずれかの解消方法があるとのことです。
参考:PowerShell 実行時の「デジタル署名されていません」エラーの対処法
都度実行する必要はありますが、今回はポリシーを変更する方針で解消しました。
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Bypass
と続けることでPowerShellを閉じればProcessの実行ポリシーは変更前に戻るそうです。自己署名を付与する場合、そのスクリプトを管理するのが手間だなと感じました。(セキュリティ的にもこちらの方が安全そうなので...)
お昼休憩では反省して下記のサイトで勉強しました。
Windows開発でしっかり一人前の働きができるように頑張ります。
おわりに
「そりゃそうだよ(笑)」となる先輩方がほとんどかと思いますが、「デジタル署名」「実行ポリシー」などのキーワードに一瞬たじろいでしまうくらいのヒヨコエンジニアなのでご容赦ください。躓きが「こっそり」で解消できただけ幸いでした。これからまた躓く度に更新していけたらと思います。
ここまで読んでいただきありがとうございました。