スクリプト実行ポリシーとは
皆さんはターミナルでこんな表示を見たことがあるだろうか
このシステムではスクリプトの実行が無効になっているため、
ファイル C:\Users\oooo\WindowsPowerShell\profile.ps1
を読み込むことができません。
私はこのエラーのせいで全然ファイルを実行することができず環境構築すらままならない状況だった。これはPowerShellがいろいろ制限していたことに起因する。したがってcondaなどを実行できなかった。
ではスクリプト実行ポリシーにはどんなものがあるのだろうか。
以下はgpt4oが教えてくれたポリシーの種類である
スクリプト実行ポリシーの種類
Restricted:
概要: すべてのスクリプトの実行を禁止します。PowerShellのコマンドレットをインタラクティブに使用することはできますが、スクリプトファイル(.ps1ファイル)の実行はできません。
制限内容: スクリプトの実行が完全に禁止されます。
AllSigned:
概要: 実行されるすべてのスクリプトが信頼された発行元によって署名されている必要があります。これはローカルのスクリプトも含みます。
制限内容: 信頼されていないスクリプトや署名されていないスクリプトは実行できません。
RemoteSigned:
概要: インターネットからダウンロードされたすべてのスクリプトは署名されている必要があります。ローカルで作成したスクリプトは署名されていなくても実行できます。
制限内容: インターネットからダウンロードされた未署名のスクリプトは実行できません。
Unrestricted:
概要: すべてのスクリプトを実行できます。ただし、インターネットからダウンロードされたスクリプトを初めて実行する場合は警告が表示されます。
制限内容: インターネットからダウンロードされたスクリプトを実行する際に警告が表示されますが、実行は可能です。
Bypass:
概要: すべてのスクリプトを無制限に実行できます。警告も表示されません。
制限内容: なし(すべてのスクリプトを実行可能)。
Undefined:
概要: ポリシーが定義されていないことを意味します。通常、親スコープのポリシーが適用されます。
制限内容: 親スコープのポリシーに依存します。
結構いろいろある。 次に今の状態を知る必要がある。以下のコマンドで知る。
Get-ExecutionPolicy
これで私は Restricted と出力されたため、オールブロック状態である。
そこで任意のポリシーに変更できるコマンドを打つ。今回は用意したスクリプトを実行できればいいので RemoteSigned にした。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
そしてターミナルを新しく作成すると、、、
警告消えたー!!!