Set-AuthenticodeSignature
PowerShell スクリプトまたはその他のファイルに Authenticode 署名を追加します。
構文
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-FilePath] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-LiteralPath <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
-SourcePathOrExtension <String[]>
-Content <Byte[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
このコマンドレットは、Windows プラットフォームでのみ使用できます。
コマンドレットは Set-AuthenticodeSignature
、サブジェクト インターフェイス パッケージ (SIP) をサポートするすべてのファイルに Authenticode 署名を追加します。
PowerShell スクリプト ファイルでは、署名はスクリプトで実行される命令の末尾を示すテキスト ブロックの形式になります。 このコマンドレットが実行されるときにファイル内に署名がある場合、その署名は削除されます。
例
例 1 - ローカル証明書ストアの証明書を使用してスクリプトに署名する
これらのコマンドは、PowerShell 証明書プロバイダーからコード署名証明書を取得し、それを使用して PowerShell スクリプトに署名します。
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
最初のコマンドでは、 Get-ChildItem
コマンドレットと PowerShell 証明書プロバイダーを使用して、証明書ストアのサブディレクトリにある Cert:\CurrentUser\My
証明書を取得します。 ドライブは Cert:
、証明書プロバイダーによって公開されるドライブです。 CodeSigningCert パラメーターは、証明書プロバイダーによってのみサポートされており、取得された証明書をコード署名機関を持つ証明書に制限します。 コマンドは、結果を 変数に $cert
格納します。
2 番目のコマンドでは、 コマンドレットを Set-AuthenticodeSignature
使用してスクリプトに署名します PSTestInternet2.ps1
。 FilePath パラメーターを使用してスクリプトの名前を指定し、Certificate パラメーターを使用して証明書が変数に$cert
格納されることを指定します。
注意
で CodeSigningCert パラメーターGet-ChildItem
を使用すると、コード署名機関を持ち、秘密キーを含む証明書のみが返されます。 秘密キーがない場合は、署名に証明書を使用できません。
例 2 - PFX ファイルの証明書を使用してスクリプトに署名する
これらのコマンドでは、 コマンドレットを Get-PfxCertificate
使用してコード署名証明書を読み込みます。 次に、それを使用して PowerShell スクリプトに署名します。
$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
Set-AuthenticodeSignature -FilePath ServerProps.ps1 -Certificate $cert
最初のコマンドでは、 コマンドレットを Get-PfxCertificate
使用して C:\Test\MySign.pfx 証明書を変数に $cert
読み込みます。
2 番目のコマンドでは、 を使用 Set-AuthenticodeSignature
してスクリプトに署名します。 の Set-AuthenticodeSignature
FilePath パラメーターは、署名するスクリプト ファイルへのパスを指定し、Cert パラメーターは証明書を$cert
含む変数を にSet-AuthenticodeSignature
渡します。
証明書ファイルがパスワードで保護されている場合、PowerShell によってパスワードの入力が求められます。
例 3 - ルート証明機関を含む署名を追加する
このコマンドは、信頼チェーンのルート証明機関を含むデジタル署名を追加します。これは、サードパーティのタイムスタンプ サーバーにより署名されます。
Set-AuthenticodeSignature -FilePath c:\scripts\Remodel.ps1 -Certificate $cert -IncludeChain All -TimestampServer "https://timestamp.fabrikam.com/scripts/timstamper.dll"
コマンドは FilePath パラメーターを使用して、署名するスクリプトを指定し、 Certificate パラメーターを使用して変数に保存される証明書を $cert
指定します。 IncludeChain パラメーターを使用して、ルート証明機関を含め、信頼チェーン内のすべての署名を含めます。 また、 TimeStampServer パラメーターを使用して、署名にタイムスタンプを追加します。
これにより、証明の有効期限が切れた場合にもスクリプトは失敗しません。
パラメーター
-Certificate
スクリプトまたはファイルへの署名に使用する証明書を指定します。 証明書を表すオブジェクトを格納する変数、または証明書を取得する式を入力します。
証明書を見つけるには、証明書Cert:
ドライブで コマンドレットをGet-ChildItem
使用Get-PfxCertificate
するか、使用します。 証明書が無効な場合、または権限がない code-signing
場合、コマンドは失敗します。
Type: | X509Certificate2 |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Content
このパラメーターは、派生元の基底クラス Set-AuthenticodeSignature
で定義されているため、構文の一覧に表示されます。 ただし、このパラメーターのサポートは では Set-AuthenticodeSignature
実装されません。
Type: | Byte[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-FilePath
署名するファイルへのパスを指定します。
Type: | String[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
コマンドレットで読み取り専用ファイルに署名を追加できるようにします。 Force パラメーターを使用しても、コマンドレットはセキュリティ制限をオーバーライドできません。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HashAlgorithm
Windows でファイルのデジタル署名の計算に使用されるハッシュ アルゴリズムを指定します。
PowerShell 7.3 の場合、既定値は SHA256 で、これは Windows の既定のハッシュ アルゴリズムです。 以前のバージョンの場合、既定値は SHA1 です。 異なるハッシュ アルゴリズムで署名されたファイルは、他のシステムで認識されない可能性があります。 サポートされているアルゴリズムは、オペレーティング システムのバージョンによって異なります。
使用可能な値の一覧については、「 HashAlgorithmName 構造体」を参照してください。
Type: | String |
Position: | Named |
Default value: | SHA256 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeChain
証明書の信頼チェーン内のどの証明書がデジタル署名に含まれているかを判断します。 NotRoot が既定値です。
有効な値は次のとおりです。
- 署名者: 署名者の証明書のみが含まれます。
- NotRoot: ルート証明機関を除き、証明書チェーン内のすべての証明書が含まれます。
- [すべて]: 証明書チェーン内のすべての証明書が含まれます。
Type: | String |
Position: | Named |
Default value: | NotRoot |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
署名するファイルへのパスを指定します。 FilePath とは異なり、LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 一重引用符は、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SourcePathOrExtension
このパラメーターは、派生元の基底クラス Set-AuthenticodeSignature
で定義されているため、構文の一覧に表示されます。 ただし、このパラメーターのサポートは では Set-AuthenticodeSignature
実装されません。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-TimestampServer
指定されたタイム スタンプ サーバーを使用して、署名にタイム スタンプを追加します。 タイム スタンプ サーバーの URL を文字列として入力します。 URL は または http://
でhttps://
始まる必要があります。
タイム スタンプは、証明書がファイルに追加された正確な時間を表します。 タイム スタンプを使用すると、署名時に証明書が有効だったことをユーザーとプログラムで検証できるため、証明書の期限が過ぎている場合であってもスクリプトは失敗しません。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
ファイル パスを含む文字列をこのコマンドレットにパイプできます。
出力
このコマンドレットは、設定した値を表す Signature オブジェクトを返します。
メモ
このコマンドレットは、Windows プラットフォームでのみ使用できます。