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
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
$signingParameters = @{
FilePath = 'PsTestInternet2.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
}
Set-AuthenticodeSignature @signingParameters
İ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 Set-AuthenticodeSignature
cmdlet parametreleriyle değişkenini PSTestInternet2.ps1
HashTableolarak tanımlar$signingParameters
. Betiğin adını belirtmek için FilePath parametresini, sertifikanın değişkende $cert
depolandığını belirtmek için Sertifika parametresini ve karma algoritmasını SHA256 olarak ayarlamak için HashAlgorithm parametresini kullanır.
Üçüncü komut, içinde $signingParameters
tanımlanan parametreleri splatlayarak betiği imzalar.
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
$signingParameters = @{
FilePath = 'ServerProps.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
}
Set-AuthenticodeSignature @signingParameters
İ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 Set-AuthenticodeSignature
cmdlet parametreleriyle değişkenini ServerProps.ps1
HashTableolarak tanımlar$signingParameters
. Betiğin adını belirtmek için FilePath parametresini, sertifikanın değişkende $cert
depolandığını belirtmek için Sertifika parametresini ve karma algoritmasını SHA256 olarak ayarlamak için HashAlgorithm parametresini kullanır.
Üçüncü komut, içinde $signingParameters
tanımlanan parametreleri splatlayarak betiği imzalar.
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.
$signingParameters = @{
FilePath = 'C:\scripts\Remodel.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
IncludeChain = 'All'
TimestampServer = 'http://timestamp.fabrikam.com/scripts/timstamper.dll'
}
Set-AuthenticodeSignature @signingParameters
İlk komut, betiği imzalamak için Set-AuthenticodeSignature
cmdlet parametreleriyle değişkeni HashTableolarak tanımlar$signingParameters
. Betiğin yolunu belirtmek için FilePath parametresini, sertifikanın değişkende $cert
depolandığını belirtmek için Sertifika parametresini ve karma algoritmasını SHA256 olarak ayarlamak için HashAlgorithm parametresini 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.
İkinci komut, içinde $signingParameters
tanımlanan parametreleri splatlayarak betiği imzalar.
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.
Varsayılan, SHA1 değeridir. 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: | Null |
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.
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.
İlişkili Bağlantılar
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin