2010-02-08 18:41:03 +0000 2010-02-08 18:41:03 +0000
305
305

PowerShellスクリプトの実行を有効にするには?

PowerShellスクリプトを実行しようとすると、こんなエラーが出ます。詳しくは「get-help about_signing」をご覧下さい。

At line:1 char:13 + .\hello.ps1 ≪<<<< + CategoryInfo : NotSpecified. (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException

回答 (10)

451
451
451
2010-02-08 18:44:16 +0000
  1. Windows PowerShell を「管理者として実行」オプションで起動します。コンピュータ上のAdministratorsグループのメンバーのみが実行ポリシーを変更できます。これにより、ローカルコンピュータに書き込んだ無署名スクリプトとインターネットからの署名付きスクリプトの実行が可能になります。
91
91
91
2010-02-08 18:43:25 +0000

デフォルトの実行ポリシーは制限付きに設定されていますが、次のように入力して確認することができます:

Get-ExecutionPolicy

あなたはそれが制限なしモードに行くようにするには、次のように入力する必要があります:

Set-ExecutionPolicy unrestricted

このヘルプを希望します。

66
66
66
2013-01-14 00:46:49 +0000

スクリプトの開発に使用しているマシンでは、上記のように -unrestricted を使用します。しかし、自分のスクリプトをエンドユーザーのマシンにデプロイする場合は、次のように -executionpolicy スイッチを指定して powershell を呼び出します。

21
21
21
2016-09-07 07:06:18 +0000

私たちは、以下のコマンドで現在のExecutionPolicyの状態を取得することができます。

Get-ExecutionPolicy;

既定では Restricted となっています。PowerShell スクリプトの実行を許可するには、この実行ポリシーを Bypass または Unrestricted のいずれかに設定する必要があります。

以下の PowerShell コマンドのいずれかを使用して、現在のユーザーのポリシーを Bypass または Unrestricted として設定することができます。インターネットからダウンロードした符号なしスクリプトを実行すると、実行前に許可を求めるプロンプトが表示されます。Bypass ExecutionPolicy は、無制限よりもリラックスしています。

5
5
5
2016-01-21 10:01:36 +0000

Windows のバージョンや設定によっては、Unrestricted モードでも以下のような警告が表示される場合があります。何もブロックされず、警告やプロンプトもありません。

これは明らかに安全ではありませんので、リスクを理解してください。

3
3
3
2017-11-29 10:10:20 +0000

A reg key with: Windows Registry Editor Version 5.00

[HKEY

1
1
1
2018-12-04 22:06:53 +0000

何らかの理由で、PowerShell cmdlet はグローバルにローカル実行を有効にしていませんでした。例えば、CygWinのbashプロンプトの中からPowershellスクリプトを起動しようとしても、それは実行されず、"is not digitalally signed “というエラーが出る。答えは、Local Group Policy Editor -> Local Computer Policy -> Administrative Templates -> Windows Components -> Windows PowerShellに入って、'Turn on Script Execution'をダブルクリックすることだった。これで、「Enabled」に変更して、「Allow local scripts and remote signed scripts」の実行ポリシーに変更して、ユーザのコンテキストに関係なくグローバルに動作するようにしました。

1
1
1
2019-04-24 14:47:15 +0000

ポリシーを(正しく)設定することは最良の選択ですが、私の管理システムではポリシーを変更することができません。

*ポリシーを変更する最も簡単な方法は、“PowerShell ISE” でスクリプトを開き、実行するコード(またはコードの一部)をハイライトしてから、"選択の実行" ボタンをクリックすることです(または F8 ショートカットを使用)。 * これは最良の解決策ではありませんし、タスクの自動化にもなりませんが、情報システム部門に迷惑をかけずに PowerShell を使用することができます。

1
1
1
2018-12-15 01:09:31 +0000

受け入れられた答えは正しいのですが、ポリシーの変更は現在実行中の Powershell インスタンスに対してのみ有効です。ポリシーはリセットされます。ユーザーが別の Powershell インスタンスを再度開いた場合、デフォルトのポリシーが適用されます。 私の場合、VisualStudio Code コンソールと cygwin の g++ を使用してビルドする必要があります。コンソールはPowershellを使用していますが、デフォルトのポリシーでは何もできません。解決策としては、VisualStudio Code コンソールでコンソールを起動するたびにポリシーを変更することです。

怠け者なので、もう一つの解決策としては、管理者モードで Powershell を実行することです。一度それが行われました。Powershell の他のインスタンスはデフォルトで Restricted ポリシーを使用します。

-2
-2
-2
2018-04-05 13:49:49 +0000

regキーが動作する理由は、PSコマンドと全く同じことをしているからです。コマンドは変更内容をregキーに書き込みます。コマンドはregキーを作成したり、レジストリを調べたりするよりもはるかに速く、簡単です。