Set-AuthenticodeSignature
PowerShell betiğine veya başka bir dosyaya Authenticode imzası ekler.
Syntax
ByPath (Varsayılan)
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
[-FilePath] <String[]>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
-LiteralPath <String[]>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByContent
Set-AuthenticodeSignature
[-Certificate] <X509Certificate2>
-SourcePathOrExtension <String[]>
-Content <Byte[]>
[-IncludeChain <String>]
[-TimestampServer <String>]
[-HashAlgorithm <String>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Set-AuthenticodeSignature cmdlet'i, 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 deposundaki bir sertifikayla betiği imzalama
Bu komutlar PowerShell Sertifika sağlayıcısından bir kod imzalama sertifikası alır ve bunu kullanarak bir PowerShell betiği imzalar.
$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 dizininde sertifikaları almak için Cert:\CurrentUser\My cmdlet'ini ve PowerShell Sertifika sağlayıcısını kullanır.
Cert: sürücüsü, 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 $cert değişkeninde depolar.
İkinci komut, $signingParameters değişkenini betiğini imzalamak için Set-AuthenticodeSignature cmdlet parametreleriyle PSTestInternet2.ps1 olarak tanımlar. Betiğin adını belirtmek için FilePath parametresini, sertifikanın değişkeninde depolandığını belirtmek için $cert parametresini ve karma algoritmasını SHA256 olarak ayarlamak için hashAlgorithm parametresini kullanır.
Üçüncü komut, $signingParametersiçinde tanımlanan parametreleri splatlayarak betiği imzalar.
Uyarı
ile Get-ChildItem parametresini kullanmak 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ındaki sertifikayla bir betiği imzalama
Bu komutlar bir kod imzalama sertifikası yüklemek için Get-PfxCertificate cmdlet'ini kullanır. 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ı Get-PfxCertificate değişkenine yüklemek için $cert cmdlet'ini kullanır.
İkinci komut, $signingParameters değişkenini betiğini imzalamak için Set-AuthenticodeSignature cmdlet parametreleriyle ServerProps.ps1 olarak tanımlar. Betiğin adını belirtmek için FilePath parametresini, sertifikanın değişkeninde depolandığını belirtmek için $cert parametresini ve karma algoritmasını SHA256 olarak ayarlamak için hashAlgorithm parametresini kullanır.
Üçüncü komut, $signingParametersiçinde 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 imzalar.
$signingParameters = @{
FilePath = 'C:\scripts\Remodel.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
IncludeChain = 'All'
TimestampServer = 'http://timestamp.fabrikam.com/scripts/timstamper.dll'
}
Set-AuthenticodeSignature @signingParameters
Komut, imzalanan betiği belirtmek için FilePath parametresini ve değişkenine kaydedilen sertifikayı belirtmek için $cert 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, $signingParametersiçinde 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 Get-PfxCertificate kullanın veya Sertifika Get-ChildItem sürücüsündeki Cert: cmdlet'ini kullanın. Sertifika geçerli değilse veya code-signing yetkisi yoksa, komut başarısız olur.
Parametre özellikleri
| Tür: | X509Certificate2 |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | 1 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Confirm
Cmdlet'i çalıştırmadan önce sizden onay ister.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | False |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | Cf |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Content
Bu parametre, Set-AuthenticodeSignature türetildiği temel sınıfta tanımlandığından söz dizimi listesinde görünür. Ancak, bu parametre için destek Set-AuthenticodeSignatureuygulanmaz.
Parametre özellikleri
| Tür: | Byte[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
ByContent
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-FilePath
İmzalanan dosyanın yolunu belirtir.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
ByPath
| Position: | 1 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Force
Cmdlet'in salt okunur bir dosyaya imza eklemesine izin verir. cmdletForce parametresini kullanarak bile güvenlik kısıtlamalarını geçersiz kılamaz.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | False |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-HashAlgorithm
Windows'un dosyanın dijital imzasını hesaplamak için kullandığı karma algoritmayı belirtir.
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ı.
Parametre özellikleri
| Tür: | String |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-IncludeChain
Dijital imzaya sertifika güven zincirindeki hangi sertifikaların dahil olduğunu belirler. NotRoot varsayılan değerdir.
Geçerli değerler şunlardır:
-
Signer: Yalnızca imzalayanın sertifikasını içerir. -
NotRoot: Kök yetkili dışında sertifika zincirindeki tüm sertifikaları içerir. -
All: Sertifika zincirindeki tüm sertifikaları içerir.
Parametre özellikleri
| Tür: | String |
| Default value: | NotRoot |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-LiteralPath
İmzalanan dosyanın yolunu belirtir. FilePathaksine, 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, yolu tek tırnak işaretleriyle çevreleyin. Tek tırnak işaretleri, PowerShell'in hiçbir karakteri kaçış dizisi olarak yorumlamamasını sağlar.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | PSPath |
Parametre kümeleri
ByLiteralPath
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-SourcePathOrExtension
Bu parametre, Set-AuthenticodeSignature türetildiği temel sınıfta tanımlandığından söz dizimi listesinde görünür. Ancak, bu parametre için destek Set-AuthenticodeSignatureuygulanmaz.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
ByContent
| Position: | Named |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-TimestampServer
İmzaya zaman damgası eklemek için belirtilen zaman damgası sunucusunu kullanır. Zaman damgası sunucusunun URL'sini dize olarak yazın. URL http:// ile 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.
Parametre özellikleri
| Tür: | String |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-WhatIf
Cmdlet çalıştırılırsa ne olacağını gösterir. Cmdlet çalıştırılmıyor.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | False |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | Wi |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CommonParameters
Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.
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.