この質問は、質問本文によって反論されているか、実際の問題に対処していない回答を引き付け続けているため、 知っておくべきことの簡単な要約をお読みください。
- これは、「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 Object
RemoteSigned
Scope ExecutionPolicy
----- ---------------
MachinePolicy RemoteSigned
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
でスクリプトを自分で作成しNotepad
、Sysinternalsのstreams
ユーティリティとファイルProperties
ダイアログを使用して、スクリプトがインターネットからのものとして扱われていないことを確認しました。スクリプトをドメイン サーバーのネットワーク共有にコピーすると、実行が許可されます。実行すると、ローカル スクリプトの実行はまだ許可されません。スコープSet-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
での実行ポリシーが優先されるため、これは理にかなっています。MachinePolicy
about_Execution_Policies
( current ; at time of question )によって文書化されているように、RemoteSigned
ポリシーは次のことを意味します。
スクリプトを実行できます。
インターネットからダウンロードされるスクリプトおよび構成ファイル (電子メールおよびインスタント メッセージング プログラムを含む) には、信頼できる発行元からのデジタル署名が必要です。
実行したスクリプトや、ローカル コンピューターで作成した (インターネットからダウンロードしたものではない) スクリプトには、デジタル署名は必要ありません。
インターネット以外のソースからの署名されていないスクリプトや、署名されているが悪意のあるスクリプトを実行するリスク。
私のスクリプトは署名されていませんが、ローカルで作成および実行されるため、上記の 3 番目の箇条書きを満たす必要があります。したがって...
- スクリプトの実行が許可されないのはなぜですか?
- 要件がインターネットからのファイルにのみ適用されるべきなのに、なぜ PowerShell は私のスクリプトが「デジタル署名されていません」と不平を言うのですか?
- スクリプトがネットワーク共有から実行されたときに、スクリプトが署名されていないことを PowerShell が気にしなくなったのはなぜですか?