[解決済み] ローカルで作成したスクリプトが、RemoteSigned実行ポリシーで実行できないのはなぜですか?
質問
<ブロッククオートこの質問には、以下のような回答が続いています。 質問本文に反論したり、実際の問題に対処していない。 以下の簡単な要約をお読みください。 を知る必要があります。
- これは ではない は、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
私はドメイン管理者とローカル管理者の両方ですが、もし私が
Get-ExecutionPolicy -List
を見ると
Group Policy Object
PowerShell を構成するために作成したものは、正しく
RemoteSigned
実行ポリシーをマシンレベルで
Scope ExecutionPolicy
----- ---------------
MachinePolicy RemoteSigned
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
で自分でスクリプトを作成しました。
Notepad
を使用し、さらに
シスインターナル
'
streams
ユーティリティと、ファイル
Properties
のダイアログで、スクリプトがインターネットから来たものとして扱われていないことを確認してください。ドメインサーバーのネットワーク共有にスクリプトをコピーすると、実行が許可される。もし私が
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
での実行ポリシーは、ローカルスクリプトの実行を許可していないので、これは理にかなっています。
MachinePolicy
スコープが優先されます。
によって文書化されているように
about_Execution_Policies
(
現在
;
質問時
を含む)、その
RemoteSigned
のポリシーを意味します。
スクリプトの実行が可能です。
インターネットからダウンロードされるスクリプトや設定ファイルには、信頼できる発行元からのデジタル署名が必要です。 (電子メールやインスタントメッセージングプログラムを含む)。
実行したスクリプトやローカルコンピューターで書いたスクリプト(ダウンロードしたものではない)にはデジタル署名は必要ありません。 インターネット)。
インターネット以外から署名されていないスクリプトや、署名されているが悪意のあるスクリプトを実行するリスク。
私のスクリプトは署名されていませんが、ローカルで作成され実行されているので、上記の3番目の箇条書きを満たしているはずです。 したがって...
- スクリプトの実行が許可されないのはなぜですか?
- PowerShell は、私のスクリプトがデジタル署名されていないと文句を言うのですが、その要件はインターネットからのファイルにのみ適用されるはずです。
- ネットワーク共有からスクリプトを実行する場合、PowerShellが署名されていないことを気にしなくなったのはなぜですか?
どのように解決するのですか?
最終的に突き止めたのは
.NETコードアクセスのセキュリティ
. 私は社内で開発したいくつかのバイナリモジュールをネットワーク共有に保存し、そこから実行するようにしています。 .NET 2.0/PowerShell 2.0にそれらを読み込ませるために、私はURLルールを
Intranet
コードグループから、そのディレクトリを信頼するようにしました。
PS> & "$Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\caspol.exe" -machine -listgroups
Microsoft (R) .NET Framework CasPol 2.0.50727.5420
Copyright (c) Microsoft Corporation. All rights reserved.
Security is ON
Execution checking is ON
Policy change prompt is ON
Level = Machine
Code Groups:
1. All code: Nothing
1.1. Zone - MyComputer: FullTrust
1.1.1. StrongName - ...: FullTrust
1.1.2. StrongName - ...: FullTrust
1.2. Zone - Intranet: LocalIntranet
1.2.1. All code: Same site Web
1.2.2. All code: Same directory FileIO - 'Read, PathDiscovery'
1.2.3. Url - file://Server/Share/Directory/WindowsPowerShell/Modules/*: FullTrust
1.3. Zone - Internet: Internet
1.3.1. All code: Same site Web
1.4. Zone - Untrusted: Nothing
1.5. Zone - Trusted: Internet
1.5.1. All code: Same site Web
なお、インストールされている.NETのバージョンや、32ビットWindowsか64ビットWindowsかにもよりますが。
caspol.exe
は以下の場所に存在することができ、それぞれ独自のセキュリティ設定がされています (
security.config
):
-
$Env:SystemRoot\Microsoft.NET\Framework\v2.0.50727\
-
$Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\
-
$Env:SystemRoot\Microsoft.NET\Framework\v4.0.30319\
-
$Env:SystemRoot\Microsoft.NET\Framework64\v4.0.30319\
グループ削除後
1.2.3.
...
PS> & "$Env:SystemRoot\Microsoft.NET\Framework64\v2.0.50727\caspol.exe" -machine -remgroup 1.2.3.
Microsoft (R) .NET Framework CasPol 2.0.50727.9136
Copyright (c) Microsoft Corporation. All rights reserved.
The operation you are performing will alter security policy.
Are you sure you want to perform this operation? (yes/no)
yes
Removed code group from the Machine level.
Success
...CASのデフォルトの設定のままで、ローカルスクリプトが再び動作するようになりました。 しばらくCASをいじっていなかったので、なぜ私のルールがそれらの付与を妨害するように見えるのかよくわかりません
FullTrust
に
MyComputer
しかし
CASは.NET 4.0から非推奨になりました。
(PowerShell 3.0のベースになっている)ので、もう無意味なんでしょうけど。
関連
-
特定のWebページに関する情報を取得するPowershellコード
-
PowerShellスクリプトのバッククオートの使用例です。いつでもどこでもコードに改行
-
PowerShellでregularとValidateSetを使用してパラメータを検証する
-
PowerShellでWPFを呼び出してクールなウィンドウを生成する例
-
システム上の停止可能な全サービスを取得するPowershell
-
バッチ処理ではなくPowerShellを使おう!
-
PowershellでWebサイトのレスポンスを確認し、実行時間を計算する例
-
[解決済み] PowerShellで「このシステムではスクリプトの実行が無効になっています」と言われる。
-
[解決済み】PowerShellスクリプトを実行する方法
-
[解決済み】PowerShellで、ファイルに関数を定義して、PowerShellのコマンドラインから呼び出すにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン