Set-AuthenticodeSignature
Authenticode 署名を Windows PowerShell スクリプトまたはその他のファイルに追加します。
構文
Set-AuthenticodeSignature [-FilePath] <string[]> [-Certificate] <X509Certificate2> [-Force] [-HashAlgorithm <string>] [-IncludeChain <string>] [-TimestampServer <string>] [-Confirm] [-WhatIf] [<CommonParameters>]
説明
Set-AuthenticodeSignature コマンドレットは、サブジェクト インターフェイス パッケージ (SIP) をサポートするファイルに Authenticode 署名を追加します。
Windows PowerShell スクリプト ファイルでは、この署名が、スクリプトで実行される命令の終了を示すテキストのブロックの形式となります。このコマンドレットを実行したときに、ファイルに署名が存在する場合、その署名は削除されます。
パラメーター
-Certificate <X509Certificate2>
スクリプトまたはファイルに署名するために使用される証明書を指定します。証明書を表すオブジェクトを保存する変数、または証明書を取得する式を入力します。
証明書を検索するには、証明書 (Cert:) ドライブで Get-PfxCertificate または Get-ChildItem コマンドレットを使用します。証明書が有効でないか、コード署名機関がない場合、このコマンドは失敗します。
必須 |
true |
位置 |
2 |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-FilePath <string[]>
署名するファイルのパスを指定します。
必須 |
true |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
true (ByValue, ByPropertyName) |
ワイルドカード文字を許可する |
false |
-Force
コマンドレットが読み取り専用ファイルに署名を追加するのを許可します。Force パラメーターを使用しても、コマンドレットはセキュリティ制限を上書きできません。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-HashAlgorithm <string>
Windows がファイルのデジタル署名の計算に使用するハッシュ アルゴリズムを指定します。既定は、Windows の既定のハッシュ アルゴリズムの SHA1 です。
異なるハッシュ アルゴリズムを使用して署名されたファイルは、他のシステムで認識されない場合があります。
必須 |
false |
位置 |
named |
既定値 |
SHA1 |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-IncludeChain <string>
証明書信頼チェーンのうち、どの証明書をデジタル署名に含めるかを決定します。既定値は "NotRoot" です。
有効な値は次のとおりです。
-- Signer: 署名者の証明書のみを含めます。
-- NotRoot: ルート機関を除き、証明書チェーンに含まれるすべての証明書を含めます。
--All: 証明書チェーンに含まれるすべての証明書を含めます。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-TimestampServer <string>
指定したタイム スタンプ サーバーを使用して、タイムスタンプを署名に追加します。タイム スタンプ サーバーの URL を文字列として入力します。
タイム スタンプは、証明書がファイルに追加された正確な時刻を表します。タイム スタンプによって、ユーザーおよびプログラムは証明書が署名の時点で有効であったことを確認できるため、証明書が期限切れになった場合にスクリプトが失敗することを防止できます。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Confirm
コマンドを実行する前に確認メッセージを表示します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-WhatIf
実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.String パイプを使用してファイル パスを含む文字列を Set-AuthenticodeSignature に渡すことができます。 |
出力 |
System.Management.Automation.Signature |
例 1
C:\PS>$cert=Get-ChildItem -Path cert:\CurrentUser\my -CodeSigningCert
C:\PS>Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -certificate $cert
説明
-----------
これらのコマンドは、Windows PowerShell 証明書プロバイダーからコード署名証明書を取得し、それを使用して Windows PowerShell スクリプトに署名します。
最初のコマンドは、Get-ChildItem コマンドレットと Windows PowerShell 証明書プロバイダーを使用して、証明書ストアの Cert:\CurrentUser\My subdirectory にある証明書を取得します (Cert: ドライブは、証明書プロバイダーによって公開されているドライブです)。CodeSigningCert パラメーターは証明書プロバイダーによってのみサポートされ、取得する証明書をコード署名機関を持つものに制限します。このコマンドは、結果を $cert 変数に保存します。
2 番目のコマンドは、Set-AuthenticodeSignature コマンドレットを使用して、PSTestInternet2.ps1 スクリプトに署名します。このコマンドは、FilePath パラメーターを使用してスクリプト名を指定し、Certificate パラメーターを使用して証明書を $cert 変数に保存するように指定します。
例 2
C:\PS>$cert = Get-PfxCertificate C:\Test\Mysign.pfx
C:\PS>Set-AuthenticodeSignature -Filepath ServerProps.ps1 -Cert $cert
説明
-----------
これらのコマンドは、Get-PfxCertificate コマンドレットを使用してコード署名用の証明書を検索します。次に、そのコマンドレットを使用して Windows PowerShell スクリプトに署名します。
最初のコマンドは、Get-PfxCertificate コマンドレットを使用して C:\Test\MySign.pfx 証明書を検索し、$cert 変数に保存します。
2 番目のコマンドは、Set-AuthenticodeSignature を使用してスクリプトに署名します。Set-AuthenticodeSignature の FilePath パラメーターは、署名するスクリプト ファイルのパスを指定し、Cert パラメーターは証明書を含む $cert 変数を Set-AuthenticodeSignature に渡します。
証明書ファイルがパスワードで保護されている場合、パスワードの入力が求められます。
例 3
C:\PS>Set-AuthenticodeSignature -filepath c:\scripts\Remodel.ps1 -certificate $cert -IncludeChain All -TimeStampServer "http://timestamp.fabrikam.com/scripts/timstamper.dll"
説明
-----------
このコマンドは、信頼チェーンのルート機関を含み、サードパーティーのタイムスタンプ サーバーによって署名されているデジタル署名を追加します。
このコマンドは、FilePath パラメーターを使用して署名対象のスクリプトを指定し、Certificate パラメーターを使用して $cert 変数に保存する証明書を指定します。IncludeChain パラメーターを使用して、信頼チェーン (ルート機関を含む) のすべての署名を含めています。また、TimeStampServer パラメーターを使用して、タイムスタンプを署名に追加しています。これにより、証明書の期限切れ時にスクリプトが失敗するのを防止できます。
関連項目
概念
about_Signing
about_Execution_Policies
Get-AuthenticodeSignature
Get-PfxCertificate
Get-ExecutionPolicy
Set-ExecutionPolicy