153

この質問は、質問本文によって反論されているか、実際の問題に対処していない回答を引き付け続けているため、 知っておくべきことの簡単な要約をお読みください。

  • これは、「PowerShell の既定のインストールでスクリプトが実行されないのはなぜですか?」という質問ではありません。質問。
  • これは、「PowerShell のインストールで、インターネットからダウンロードしたスクリプトが実行されないのはなぜですか?」という質問ではありません。質問。
  • 問題は、RemoteSigned実行ポリシーがスクリプトの実行を妨げてはならないのになぜ妨げているのかということです。
  • RemoteSigned使用したい唯一の実行ポリシーです。 制限の少ない他のポリシーが利用可能であることは承知しています。それらのポリシーが受け入れられる代替品である場合、代わりにそれらを使用しただけで、この質問は存在しません。
  • 実行ポリシーはすでにに設定されていRemoteSignedます。RemoteSignedからに 変更することRemoteSignedは解決策ではありません。
  • スクリプト ファイルが作成され、ローカルに保存されます。
  • スクリプト ファイルはブロックされません。 スクリプト ファイルはブロックされませんでした (前のポイントを参照)。
  • ブロックを解除するものが何もないため、スクリプト ファイルのブロックを解除できません (前のポイントを参照)。
  • スクリプト ファイルは、管理者によって実行されます (実行されようとします)。
  • Windows PowerShell関連する唯一のアプリケーションです。他のツールやエディタも関係 ありませWindows PowerShell ISEん。Command Prompt
  • 問題の原因はすでに特定されています(受け入れられた回答を参照)。ほぼ 8 年後、該当するかどうかに関係なく、他のすべての明白な説明も投稿されたと思います。そうでないと思う場合は、質問を追加する前に、質問と既存の回答をすべて読んでください。

64 ビット Windows 7 Professional で Windows PowerShell 2.0 を使用しています。Desktop実行しようとすると次のエラーが発生するスクリプトがあります。

File C:\Users\UserName\Desktop\Script.ps1 cannot be loaded. The file C:\Users\UserName\Desktop\Script.ps1 is not digitally signed. The script will not execute on the system.  Please see "get-help about_signing" for more details..
At line:1 char:54
+ C:\Users\UserName\Desktop\TestGetWindowsUpdateLog.ps1 <<<<
    + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

私はドメイン管理者とローカル管理者の両方です。実行すると、PowerShell を構成するために作成した がマシン レベルで実行ポリシーを正しく適用してGet-ExecutionPolicy -Listいることがわかります。Group Policy ObjectRemoteSigned

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy    RemoteSigned
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

でスクリプトを自分で作成しNotepadSysinternalsstreamsユーティリティとファイルPropertiesダイアログを使用して、スクリプトがインターネットからのものとして扱われていないことを確認しました。スクリプトをドメイン サーバーのネットワーク共有にコピーすると、実行が許可されます。実行すると、ローカル スクリプトの実行はまだ許可されません。スコープSet-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachineでの実行ポリシーが優先されるため、これは理にかなっています。MachinePolicy

about_Execution_Policies( current ; at time of question )によって文書化されているように、RemoteSignedポリシーは次のことを意味します。

  • スクリプトを実行できます。

  • インターネットからダウンロードされるスクリプトおよび構成ファイル (電子メールおよびインスタント メッセージング プログラムを含む) には、信頼できる発行元からのデジタル署名が必要です。

  • 実行したスクリプトや、ローカル コンピューターで作成した (インターネットからダウンロードしたものではない) スクリプトには、デジタル署名は必要ありません。

  • インターネット以外のソースからの署名されていないスクリプトや、署名されているが悪意のあるスクリプトを実行するリスク。

私のスクリプトは署名されていませんが、ローカルで作成および実行されるため、上記の 3 番目の箇条書きを満たす必要があります。したがって...

  • スクリプトの実行が許可されないのはなぜですか?
  • 要件がインターネットからのファイルにのみ適用されるべきなのに、なぜ PowerShell は私のスクリプトが「デジタル署名されていません」と不平を言うのですか?
  • スクリプトがネットワーク共有から実行されたときに、スクリプトが署名されていないことを PowerShell が気にしなくなったのはなぜですか?
4

15 に答える 15

188

確認事項:

無制限に変更できますか?

Set-ExecutionPolicy Unrestricted

グループポリシーは設定されていますか?

  • Computer Configuration\Administrative Templates\Windows Components\Windows PowerShell
  • User Configuration\Administrative Templates\Windows Components\Windows PowerShell

また、Script.ps1 はどのように呼び出していますか?

これで実行できますか?

powershell.exe -executionpolicy bypass -file .\Script.ps1
于 2012-03-16T18:50:06.460 に答える
136

ファイルはブロックされていますか? 同じ問題があり、.PS1 ファイル、[プロパティ] を右クリックして [ブロックの解除] を選択することで解決できました。

于 2012-11-27T15:06:04.283 に答える
15

.ps1 PowerShell スクリプトを実行すると、「.ps1 はデジタル署名されていません。スクリプトはシステム上で実行されません。」これを修正するには、以下のコマンドを実行して Set-ExecutionPolicy を実行し、実行ポリシーの設定を変更する必要があります。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
于 2020-08-07T12:32:36.687 に答える
6

このコード行は、Ubuntu で virtualbox を使用し、Win 10 を仮想 OS として PowerShell 内で動作していました。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

うまくいかない場合は、以下のリソースを読むことをお勧めします。

セット実行ポリシー

モジュール: Microsoft.PowerShell.Security Windows コンピューターの PowerShell 実行ポリシーを設定します。

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-7.1#:~:text=To%20change%20the%20execution%20policy,Get %2DExecutionPolicy%20with%20no%20parameters .

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-executionpolicy?view=powershell-7.1

Get-ExecutionPolicy -List

https://devblogs.microsoft.com/scripting/hey-scripting-guy-how-can-i-sign-windows-powershell-scripts-with-an-enterprise-windows-pki-part-2-of-2/

于 2021-02-02T16:16:34.793 に答える
0

これは IDE の問題です。PowerShell GUI で設定を変更します。[ツール] タブに移動し、 [オプション]、[デバッグ オプション] の順に選択します。次に、 [署名するスクリプトの要件を無効にする]チェックボックスをオンにします。終わり。

于 2013-05-29T15:19:14.503 に答える
-2

Powershell GUI を管理者として実行してみてください

于 2016-05-23T07:01:40.687 に答える