PowerShellスクリプトを起動できるようにする・実行ポリシーの変更 †PowerShellスクリプト(拡張子.ps1)はデフォルトでは実行禁止となっています。 PS C:\PowerShell> .\hello.ps1 スクリプトの実行がシステムで無効になっているため、ファイル C:\PowerShell\hello.ps1 を読み込めません。詳細については、「 get-help about_signing」と入力してヘルプを参照してください。 発生場所 行:1 文字:12 + .\hello.ps1 <<<< + CategoryInfo : NotSpecified: (:) []、PSSecurityException + FullyQualifiedErrorId : RuntimeException メッセージ出力の通り、スクリプトの実行がシステムで無効になっているためです。 関連記事 †
get-help about_signing †メッセージ内にあるget-help about_signingを確認すると以下のような記述があります。 PS C:\PowerShell> Get-Help about_signing | more <snip> 詳細説明 Restricted 実行ポリシーでは、すべてのスクリプトの実行が禁止されます。 AllSigned 実行ポリシーおよび RemoteSigned 実行ポリシーでは、デジタル署名がないスクリプ トの実行が禁止されます。 このトピックでは、実行ポリシーが RemoteSigned の場合であっても選択した署名されていないス クリプトを実行する方法について説明します。加えて、自分専用にスクリプトに署名する方法について 説明します。 Windows PowerShell の実行ポリシーの詳細については、「about_Execution_Policy」を参照 してください。 現在のポリシーを確認するコマンドGet-ExecutionPolicyを実行するとRestrictedが返却されました。 PS C:\PowerShell> Get-ExecutionPolicy Restricted これでは、スクリプトすべてが実行できません。 PowerShell実行ポリシーの種類 †以下のPowerShellの実行ポリシーの種類を記します。 実行ポリシーの種類 †使用すると思われる実行ポリシーについて記述します。
したがって、PowerShellの勉強や開発であれば、RemoteSignedがおすすめです。 about_Execution_Policiesの抜粋 †実行ポリシーのヘルプは以下のコマンドで表示することができます。 Get-Help about_Execution_Policies 以下、about_Execution_Policiesに記載されていた内容の抜粋です。 PS C:\PowerShell> Get-Help about_Execution_Policies | more トピック about_Execution_Policies 簡易説明 Windows PowerShell の実行ポリシーとその管理方法について説明します。 <snip>
Restricted - 既定の実行ポリシーです。 - 個々のコマンドは許可されますが、スクリプトは実行されません。 - 書式設定ファイルと構成ファイル (.ps1xml)、モジュール スクリプト ファイル (.psm1)、および Windows PowerShell プロファイル (.ps1) を含む、すべてのスクリプト ファイルの実行が禁止されます。
AllSigned - スクリプトを実行できます。 - すべてのスクリプトと構成ファイルが信頼された発行元によって署名されていることが 要求されます (ユーザーがローカル コンピューターで作成するスクリプトを含む)。 - 信頼されているかどうかが分類されていない発行元からのスクリプトを実行する前に、プ ロンプトが表示されます。 - インターネット以外のソースによる署名なしスクリプトや署名済みの悪意のあるスクリ プトを実行する危険性があります。
RemoteSigned - スクリプトを実行できます。 - インターネットからダウンロードされたスクリプトおよび構成ファイル (電子メール プ ログラムとインスタント メッセージング プログラムを含む) に対して、信頼された発行元 によるデジタル署名が必要です。 - (インターネットからダウンロードしたのではなく) ローカル コンピューターで実行され たスクリプトおよび作成されたスクリプトにはデジタル署名は不要です。 - 署名済みの悪意のあるスクリプトを実行する危険性があります。
Unrestricted - 署名なしスクリプトを実行できます (悪意のあるスクリプトを実行する危険性があります)。 - インターネットからダウンロードしたスクリプトおよび構成ファイルを実行する前にユ ーザーに警告します。
Bypass - 何もブロックされず、警告またはプロンプトも表示されません。 - この実行ポリシーは、Windows PowerShell スクリプトが大きいアプリケーションに組み 込まれる構成や、独自のセキュリティ モデルを備えたプログラムの基礎として Windows PowerShell が使用される構成を対象に設計されています。
Undefined - 現在のスコープで設定されている実行ポリシーはありません。 - すべてのスコープの実行ポリシーが Undefined である場合、効力を持つ実行ポリシーは 既定の実行ポリシーである Restricted となります。 注: 汎用名前付け規則 (UNC) パスとインターネット パスとが区別されないシステムでは、 RemoteSigned 実行ポリシーで UNC パスによって識別されるスクリプトの実行が許可されない可能性 があります。 PowerShell実行ポリシーの変更 †PowerShell実行ポリシーを変更するには、以下のコマンドを実行します。 Set-ExecutionPolicy ポリシー 以下にRemoteSignedポリシーに変更した場合の操作を記します。
PS C:\PowerShell> Get-ExecutionPolicy Restricted PS C:\PowerShell> Set-ExecutionPolicy RemoteSigned 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピックで説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [N] いいえ(N) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y PS C:\PowerShell> Get-ExecutionPolicy RemoteSigned PS C:\PowerShell> .\hello.ps1 Hello |