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-AuthenticodeSignature
geç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-AuthenticodeSignature
uygulanmaz.
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-AuthenticodeSignature
uygulanmaz.
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
Dosya yolunu içeren bir dizeyi bu cmdlet'e aktarabilirsiniz.
Çıkışlar
Bu cmdlet, ayarlandığı değeri temsil eden bir Signature nesnesi döndürür.
Notlar
Bu cmdlet yalnızca Windows platformlarında kullanılabilir.
İlişkili Bağlantılar
PowerShell