PowerShellスクリプトの実行を可能にするには?

powershell

PowerShell スクリプトを実行しようとすると、このエラーが出ます

File C:\CommonScriptshello.ps1は、スクリプトの実行が無効になっているため、読み込めません。詳しくは「get-help about_signing」をご覧ください。 At line:1 char:13 + .hello.ps1 <<<< + CategoryInfo : NotSpecified.(:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException

  353  Pavel Chuchuva  2010-02-08


ベストアンサー

  1. Windows PowerShellを「管理者として実行」オプションで起動します。実行ポリシーを変更できるのは、コンピュータのAdministratorsグループのメンバーのみです

  2. 入力することで、符号なしスクリプトの実行を有効にします

    set-executionpolicy remotesigned
    

これにより、ローカルコンピュータ上で書いた署名のないスクリプトや、インターネットからの署名付きスクリプトを実行できるようになります

Microsoft TechNet Library の Running Scripts も参照してください

508  Pavel Chuchuva  2010-02-08


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

Get-ExecutionPolicy

以下のように入力して、無制限モードにする必要があります

Set-ExecutionPolicy unrestricted

これが助けになることを願っています

109  William Hilsum  2010-02-08


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

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1

69  MDMoore313  2013-01-14


我々は、以下のコマンドで現在のExecutionPolicyのステータスを取得することができます

Get-ExecutionPolicy;

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

以下のPowerShellコマンドを使用して、現在のユーザのポリシーをBypassまたはUnrestrictedに設定することができます

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

無制限ポリシーでは、すべての設定ファイルをロードし、すべてのスクリプトを実行します。インターネットからダウンロードした無署名のスクリプトを実行すると、実行前に許可を求めるプロンプトが表示されます

一方、Bypass ポリシーでは、スクリプトの実行中に何もブロックされず、警告やプロンプトもありません。Bypass ExecutionPolicyは、無制限よりもリラックスしています

26  Pratik Patil  2016-09-07


Windowsのバージョンや設定によっては、Unrestrictedモードでも以下のような警告が出る場合があります

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the
Unblock-File cmdlet to allow the script to run without this warning message.
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

解決策は、以下のコマンドで有効にした「バイパス」ポリシーを使用することです

Set-ExecutionPolicy Bypass

文書より

バイパス。何もブロックされておらず、警告やプロンプトもありません

これは明らかに不安ですので、リスクをご理解ください

8  Benoit Blanchon  2016-01-21


.regファイルのことです

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Bypass"

and:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

も確かに機能します

4  Giesbert Schipper  2017-11-29


何らかの理由で、PowerShell cmdlet はグローバルにローカル実行を有効にしていませんでした。例えば、CygWinのbashプロンプトの中からPowershellスクリプトを起動しようとすると、「デジタル署名されていません」というエラーが出て実行されませんでした。これを解決するには、ローカルグループポリシーエディタ -> ローカルコンピュータポリシー -> 管理テンプレート -> Windowsコンポーネント -> Windows PowerShellを開き、「スクリプトの実行を有効にする」をダブルクリックします。これで「Enabled」に変更し、「Allow local scripts and remote signed scripts」の実行ポリシーを設定して、ユーザーのコンテキストに関係なくグローバルに動作するようになりました

2  Eric Green  2018-12-04


受け入れられた答えは正しいのですが、ポリシーの変更は現在実行中の Powershell インスタンスに対してのみ有効です。ポリシーはリセットされます。ユーザーが別の Powershell インスタンスを再度開いた場合、デフォルトのポリシーが適用されます

私の場合、VisualStudio Code のコンソールと cygwin の g++ を使ってビルドする必要があります。コンソールはPowershellを使用していますが、デフォルトのポリシーでは何もできません。解決策としては、VisualStudio Codeコンソールでコンソールが起動するたびにポリシーを変更することですが、ポリシーを変更するスクリプトがあるかもしれません

私は怠け者なので、別の解決策は、私が管理モードでPowershellを実行するときに、受け入れられた答えが行うのと似ています。一度それが実行されると、他のPowershellのインスタンスが使用されます。Powershellの他のインスタンスはデフォルトでRemoteSignedポリシーを使用します

set-executionpolicy remotesigned -Scope CurrentUser

2  r0ng  2018-12-15


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

私の場合、ポリシーを変更するための最も簡単な回避策は、「PowerShell ISE」でスクリプトを開き、実行するコード(またはコードの一部)をハイライトしてから、「選択範囲の実行」ボタンをクリックすることです(またはショートカットF8を使用)

これは最良のソリューションではありませんが、タスクの自動化にはほとんど役立ちませんが、私のIS部門に迷惑をかけずにPowerShellのユーティリティを使用することができます

1  DBADon  2019-04-24


  1. Open Start.

  2. PowerShellを検索し、トップ結果を右クリックして、管理者として実行オプションをクリックします

  3. 以下のコマンドを入力してスクリプトの実行を許可し、Enterを押します

    Set-ExecutionPolicy RemoteSigned
    
  4. Aと入力してEnterキーを押します(該当する場合)

  5. 以下のコマンドを入力してスクリプトを実行し、Enterキーを押します

    & "C:\PATH\TO\SCRIPT\first_script.ps1"
    

    上記のコマンドでは、「PATH\TO\SCRIPT」をスクリプトの場所に変更してください

ステップを完了すると、スクリプトが実行され、正しく作成されていれば問題なく出力されているはずです

0  Arijit D  2020-04-09


メモを一つだけ

PowerShell ISEを使ってスクリプトとしてset-executionpolicy remotesignedコマンドを実行しない。私の場合はうまくいきません

高架下のPowerShellで実行する – Pavel Chuchuvaによって提供されるステップバイステップの推奨事項に従ってください

0  Proxyma  2020-07-29


あなたがインターネットから.ps1をダウンロードした場合は、右クリックのプロパティにブロックを解除するボタンがあるかもしれません、ちょうどそれをクリックします

0  colin lamarre  2020-09-23


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

-2  keith  2018-04-05


タイトルとURLをコピーしました