この質問は、質問の本文で反論されているか、実際の問題に対処していない回答を引き付け続けているため、知っておくべきことの簡単な要約を読んで ください。
- これはない「なぜPowerShellの私のデフォルトのインストールが実行されませんスクリプトの?」質問。
- これはない「なぜPowerShellの実行スクリプトの私のインストールは、インターネットからダウンロードしないのだろうか?」質問。
- 問題は、
RemoteSigned
実行ポリシーがスクリプトの実行を禁止しているのに、なぜ禁止しているのかということです。RemoteSigned
使用したい実行ポリシーはこれだけです。 他の制限の少ないポリシーが利用可能であることを認識しています。それらのポリシーが受け入れ可能な代替である場合、私は代わりにそれらを使用しただけであり、この質問は存在しません。- 実行ポリシーはすでにに設定されてい
RemoteSigned
ます。 からRemoteSigned
に変更することRemoteSigned
は解決策ではありません。- スクリプトファイルはローカルで作成および保存されます。
- スクリプトファイルはブロックされません。 スクリプトファイルがブロックされることはありませんでした(前のポイントを参照)。
- ブロックを解除するものがないため、スクリプトファイルのブロックを解除することはできません(前のポイントを参照)。
- スクリプトファイルは、管理者によって実行されます(実行されようとします)。
Windows PowerShell
関係する唯一のアプリケーションです。また、他のツールやエディターも関係 ありWindows PowerShell ISE
ませCommand Prompt
ん。- 問題の原因はすでに特定されています(承認された回答を参照)。ほぼ8年後、該当するかどうかにかかわらず、他のすべての明白な説明も投稿されたと思います。そうでない場合は、質問と既存の回答をすべて読んでから、追加してください。
64ビットのWindows7ProfessionalでWindowsPowerShell2.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
私はドメイン管理者とローカル管理者の両方であり、実行するとGet-ExecutionPolicy -List
、Group Policy Object
PowerShellを構成するために作成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
(現在;質問の時点で)によって文書化されているように、RemoteSigned
ポリシーは次のことを意味します。
スクリプトを実行できます。
インターネットからダウンロードされるスクリプトおよび構成ファイル(電子メールおよびインスタントメッセージングプログラムを含む)に、信頼できる発行元からのデジタル署名が必要です。
実行し、ローカルコンピューター(インターネットからダウンロードされていない)で作成したスクリプトにデジタル署名は必要ありません。
インターネット以外のソースからの署名されていないスクリプトと、署名されているが悪意のあるスクリプトを実行するリスク。
私のスクリプトは署名されていませんが、ローカルで作成および実行されるため、上記の3番目の箇条書きを満たす必要があります。したがって...
- スクリプトの実行が許可されないのはなぜですか?
- その要件がインターネットからのファイルにのみ適用される必要があるのに、PowerShellがスクリプトが「デジタル署名されていない」と文句を言うのはなぜですか?
- PowerShellが、ネットワーク共有から実行されたときにスクリプトが署名されていないことを気にしないのはなぜですか?