Set-AuthenticodeSignature

PowerShell betiğine veya başka bir dosyaya Authenticode imzası ekler.

Syntax

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>]

Description

Bu cmdlet yalnızca Windows platformunda kullanılabilir.

cmdlet'i, Set-AuthenticodeSignature Konu Arabirim Paketi'ni (SIP) destekleyen herhangi bir dosyaya Authenticode imzası ekler.

PowerShell betik dosyasında imza, betikte yürütülen yönergelerin sonunu gösteren bir metin bloğu biçiminde olur. Bu cmdlet çalıştırıldığında dosyada bir imza varsa, bu imza kaldırılır.

Örnekler

Örnek 1 - Yerel sertifika deposundan bir sertifika kullanarak betik imzalama

Bu komutlar PowerShell sertifika sağlayıcısından bir kod imzalama sertifikası alır ve bir PowerShell betiği imzalamak için bunu kullanır.

$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert

İlk komut, sertifika deposunun Get-ChildItem alt dizinindeki sertifikaları almak için cmdlet'ini Cert:\CurrentUser\My ve PowerShell sertifika sağlayıcısını kullanır. Sürücü Cert: , sertifika sağlayıcısı tarafından kullanıma sunulan sürücüdür. Yalnızca sertifika sağlayıcısı tarafından desteklenen CodeSigningCert parametresi, alınan sertifikaları kod imzalama yetkilisine sahip sertifikalarla sınırlar. komutu sonucu değişkeninde $cert depolar.

İkinci komut, betiği imzalamak için cmdlet'ini PSTestInternet2.ps1 kullanırSet-AuthenticodeSignature. FilePath parametresini kullanarak betiğin adını ve Sertifika parametresini kullanarak sertifikanın değişkende $cert depolandığını belirtir.

Not

CodeSigningCert parametresini ile kullanmak Get-ChildItem yalnızca kod imzalama yetkilisine sahip ve özel anahtar içeren sertifikaları döndürür. Özel anahtar yoksa, sertifikalar imzalama için kullanılamaz.

Örnek 2 - PFX dosyasından sertifika kullanarak betik imzalama

Bu komutlar bir kod imzalama sertifikası yüklemek için cmdlet'ini kullanır Get-PfxCertificate . Ardından powershell betiğini imzalamak için bunu kullanın.

$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
Set-AuthenticodeSignature -FilePath ServerProps.ps1 -Certificate $cert

İlk komut, C:\Test\MySign.pfx sertifikasını değişkene yüklemek için cmdlet'ini $cert kullanırGet-PfxCertificate.

İkinci komut betiği imzalamak için kullanır Set-AuthenticodeSignature . dosyasının Set-AuthenticodeSignature FilePath parametresi, imzalanan betik dosyasının yolunu belirtir ve Cert parametresi sertifikayı $cert içeren değişkeni öğesine Set-AuthenticodeSignaturegeçirir.

Sertifika dosyası parola korumalıysa PowerShell sizden parolayı ister.

Örnek 3 - Kök yetkilisini içeren bir imza ekleme

Bu komut, güven zincirindeki kök yetkiliyi içeren bir dijital imza ekler ve bir üçüncü taraf zaman damgası sunucusu tarafından imzalanır.

Set-AuthenticodeSignature -FilePath c:\scripts\Remodel.ps1 -Certificate $cert -IncludeChain All -TimestampServer "https://timestamp.fabrikam.com/scripts/timstamper.dll"

komut, imzalanan betiği belirtmek için FilePath parametresini ve değişkene kaydedilen sertifikayı belirtmek için Sertifika parametresini $cert kullanır. Kök yetkili de dahil olmak üzere güven zincirindeki tüm imzaları dahil etmek için IncludeChain parametresini kullanır. Ayrıca, imzaya bir zaman damgası eklemek için TimeStampServer parametresini kullanır. Bu, sertifikanın süresi dolduğunda betiğin başarısız olmasını engeller.

Parametreler

-Certificate

Betiği veya dosyayı imzalamak için kullanılacak sertifikayı belirtir. Sertifikayı temsil eden bir nesneyi veya sertifikayı alan bir ifadeyi depolayan bir değişken girin.

Sertifika bulmak için Sertifika Cert: sürücüsündeki Get-ChildItem cmdlet'ini kullanın Get-PfxCertificate veya kullanın. Sertifika geçerli değilse veya yetkisi yoksa code-signing , komut başarısız olur.

Type:X509Certificate2
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Cmdlet'i çalıştırmadan önce sizden onay ister.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Content

Bu parametre, türetilen temel sınıfta Set-AuthenticodeSignature tanımlandığından söz dizimi listesinde görüntülenir. Ancak, bu parametre desteği içinde Set-AuthenticodeSignatureuygulanmaz.

Type:Byte[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-FilePath

İmzalanan dosyanın yolunu belirtir.

Type:String[]
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Force

Cmdlet'in salt okunur bir dosyaya imza eklemesine izin verir. Zorla parametresi kullanıldığında bile, cmdlet güvenlik kısıtlamalarını geçersiz kılamaz.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HashAlgorithm

Windows'un dosyanın dijital imzasını hesaplamak için kullandığı karma algoritmayı belirtir.

PowerShell 7.3 için varsayılan değer, Windows varsayılan karma algoritması olan SHA256'dır. Önceki sürümler için varsayılan değer SHA1'dir. Farklı bir karma algoritmasıyla imzalanan dosyalar diğer sistemlerde tanınmayabilir. Hangi algoritmaların desteklendiği işletim sisteminin sürümüne bağlıdır.

Olası değerlerin listesi için bkz . HashAlgorithmName Yapısı.

Type:String
Position:Named
Default value:SHA256
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeChain

Dijital imzaya sertifika güven zincirindeki hangi sertifikaların dahil olduğunu belirler. NotRoot varsayılan değerdir.

Geçerli değerler:

  • İmzalayan: Yalnızca imzalayanın sertifikasını içerir.
  • NotRoot: Kök yetkili dışında sertifika zincirindeki tüm sertifikaları içerir.
  • Tümü: Sertifika zincirindeki tüm sertifikaları içerir.
Type:String
Position:Named
Default value:NotRoot
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

İmzalanan dosyanın yolunu belirtir. FilePath'in aksine, LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol kaçış karakterleri içeriyorsa, tek tırnak içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamaması gerektiğini söyler.

Type:String[]
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SourcePathOrExtension

Bu parametre, türetilen temel sınıfta Set-AuthenticodeSignature tanımlandığından söz dizimi listesinde görüntülenir. Ancak, bu parametre desteği içinde Set-AuthenticodeSignatureuygulanmaz.

Type:String[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-TimestampServer

İmzaya zaman damgası eklemek için belirtilen zaman damgası sunucusunu kullanır. Zaman damgası sunucusunun URL'sini dize olarak yazın. URL veya http://ile https:// başlamalıdır.

Zaman damgası, sertifikanın dosyaya tam olarak eklendiği zamanı temsil eder. Kullanıcılar ve programlar sertifikanın imzalama sırasında geçerli olduğunu doğrulayabildiği için sertifikanın süresi dolarsa zaman damgası betiğin başarısız olmasını engeller.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmaz.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

String

Dosya yolunu içeren bir dizeyi bu cmdlet'e aktarabilirsiniz.

Çıkışlar

Signature

Bu cmdlet, ayarlandığı değeri temsil eden bir Signature nesnesi döndürür.

Notlar

Bu cmdlet yalnızca Windows platformlarında kullanılabilir.