私はまだPowerShellにかなり慣れていません。最近、PowerShellスクリプトの作成と使用に関するブログ投稿でこれを読んでいます。
悪意のあるスクリプトの実行を防ぐために、PowerShellは実行ポリシーを適用します。デフォルトでは、実行ポリシーは制限付きに設定されています。つまり、PowerShellスクリプトは実行されません。次のコマンドレットを使用して、現在の実行ポリシーを確認できます。
Get-ExecutionPolicy
使用できる実行ポリシーは次のとおりです。
- 制限付き-スクリプトは実行されません。
- RemoteSigned-ローカルで作成されたスクリプトは実行されますが、インターネットからダウンロードされたスクリプトは実行されません(信頼できる発行元によってデジタル署名されている場合を除く)。
- AllSigned-スクリプトは、信頼できる発行元によって署名されている場合にのみ実行されます。
- 無制限-スクリプトは、どこから来たか、および署名されているかどうかに関係なく実行されます。
次のコマンドレットを使用して、PowerShellの実行ポリシーを設定できます。
Set-ExecutionPolicy <policy name>
私にとって、リモート署名の説明にある「それらが信頼できる発行元によってデジタル署名されていない限り」という表記は、 AllSigned。どこかに欠けている違いはありますか?
明らかにAllSignedでは、すべてのモジュール/スナップインとスクリプトにコード署名が必要です。 RemoteSignedでは、リモートファイルの署名のみが必要です。リモートファイルとは
標準的な答えはPowerShellブログにあります: http://blogs.msdn.com/b/powershell/archive/2007/03/07/how-does-the-remotesigned-execution-policy-work.aspx
しかし、一番下の行は:RemoteSignedは、「ゾーン」の「インターネット」ゾーンからのフラグが立てられたモジュール/スナップインとスクリプトへのコード署名のみを必要とします.Identifier '代替データストリーム( "Internet Explorer Enhanced Security"を有効にしていない場合)。この場合、 "イントラネット"フラグの付いたファイルとUNCパスも含まれます。
違いは、RemoteSignedは署名されていないスクリプトをローカルで実行するのに対し、AllSignedは、その起源に関係なくすべてのスクリプトに署名が必要であることです。