Set-AuthenticodeSignature (Microsoft.PowerShell.Security)
Set-AuthenticodeSignature
- Modül:
- Microsoft.PowerShell.Security
PowerShell betiğine veya başka bir dosyaya Authenticode imzası ekler.
Sözdizimi
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>]Tanım
Bu cmdlet yalnızca Windows platformunda mevcuttur.
Set-AuthenticodeSignature cmdlet'i, Konu Arayüz Paketi'ni (SIP) destekleyen herhangi bir dosyaya bir Authenticode imzası ekler.
PowerShell betik dosyasında imza, betikte yürütülen talimatların sonunu belirten bir metin bloğu biçimini alır. Bu cmdlet çalıştırıldığında dosyada bir imza varsa o imza kaldırılır.
Örnekler
Örnek 1 - Yerel sertifika deposundaki bir sertifikayı kullanarak bir komut dosyasını imzalama
Bu komutlar, PowerShell sertifika sağlayıcısından bir kod imzalama sertifikası alır ve bunu bir PowerShell betiğini imzalamak için kullanır.
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
İlk komut, sertifika deposunun Cert:\CurrentUser\My alt dizinindeki sertifikaları almak için Get-ChildItem cmdlet'ini ve PowerShell sertifika sağlayıcısını kullanır. Cert: sürücüsü, sertifika sağlayıcısının sunduğu sürücüdür. Yalnızca sertifika sağlayıcı tarafından desteklenen CodeSigningCert parametresi, alınan sertifikaları kod imzalama yetkisine sahip olanlarla sınırlar. Komut, sonucu $cert değişkeninde saklar.
İkinci komut, PSTestInternet2.ps1 betiğini imzalamak için Set-AuthenticodeSignature cmdlet'ini kullanır. Komut dosyasının adını belirtmek için FilePath parametresini ve sertifikanın $cert değişkeninde saklandığını belirtmek için Certificate parametresini kullanır.
Not
CodeSigningCert parametresinin Get-ChildItem ile kullanılması yalnızca kod imzalama yetkisine sahip olan ve özel anahtar içeren sertifikaları döndürür. Özel anahtar yoksa sertifikalar imzalama için kullanılamaz.
Örnek 2 - PFX dosyasındaki sertifikayı kullanarak komut dosyasını imzalama
Bu komutlar, bir kod imzalama sertifikası yüklemek için Get-PfxCertificate cmdlet'ini kullanır. Daha sonra bunu bir PowerShell betiğini imzalamak için 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ı $cert değişkenine yüklemek için Get-PfxCertificate cmdlet'ini kullanır.
İkinci komut, betiği imzalamak için Set-AuthenticodeSignature'u kullanır. Set-AuthenticodeSignature'un FilePath parametresi imzalanmakta olan komut dosyasının yolunu belirtir ve Cert parametresi $certSet-AuthenticodeSignature sertifikasını içeren değişkeni.
Sertifika dosyası parola korumalıysa PowerShell sizden parolayı ister.
Örnek 3 - Kök yetkiliyi içeren bir imza ekleme
Bu komut, güven zincirindeki kök yetkiliyi içeren bir dijital imza ekler ve bu, üçüncü taraf bir 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, imzalanmakta olan betiği belirtmek için FilePath parametresini ve $cert değişkeninde kaydedilen sertifikayı belirtmek için Certificate 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 zaman damgası eklemek için TimeStampServer parametresini de kullanır. Bu, sertifikanın süresi dolduğunda komut dosyasının başarısız olmasını önler.
Parametreler
-Certificate
Komut dosyasını veya dosyayı imzalamak için kullanılacak sertifikayı belirtir. Sertifikayı temsil eden bir nesneyi veya sertifikayı alan bir ifadeyi saklayan bir değişken girin.
Bir sertifika bulmak için Get-PfxCertificate kullanın veya Sertifika Cert: sürücüsündeki Get-ChildItem cmdlet'ini kullanın. Sertifika geçerli değilse veya kod imzalama yetkisine sahip değilse komut başarısız olur.
- Tip :
X509Sertifika2
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Confirm
Cmdlet'i çalıştırmadan önce sizden onay ister.
- Tip :
SwitchParameter
- Takma adlar:
-
cf
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Content
Bu parametre, Set-AuthenticodeSignature'un türetildiği temel sınıfta tanımlandığı için sözdizimi listesinde görünür. Ancak bu parametreye yönelik destek Set-AuthenticodeSignature'da uygulanmamıştır.
- Tip :
Bayt[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-FilePath
İmzalanmakta olan bir dosyanın yolunu belirtir.
- Tip :
String[]
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-Force
Cmdlet'in salt okunur bir dosyaya imza eklemesine izin verir. Force parametresi kullanılsa bile cmdlet güvenlik kısıtlamalarını geçersiz kılamaz.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-HashAlgorithm
Windows'un dosyanın dijital imzasını hesaplamak için kullandığı karma algoritmasını belirtir.
PowerShell 7.3 için varsayılan, Windows'un varsayılan karma algoritması olan SHA256'dır. Önceki sürümler için varsayılan 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 Struct.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
SHA256
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-IncludeChain
Sertifika güven zincirindeki hangi sertifikaların dijital imzaya dahil edileceğini belirler. NotRoot varsayılandır.
Geçerli değerler şunlardır:
- İmzalayan: Yalnızca imzalayanın sertifikasını içerir.
- NotRoot: Sertifika zincirindeki kök yetkili dışındaki tüm sertifikaları içerir.
- Hepsi: Sertifika zincirindeki tüm sertifikaları içerir.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
NotRoot
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-LiteralPath
İmzalanmakta olan bir dosyanın yolunu belirtir. FilePath'ten farklı olarak LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmaz. Yol kaçış karakterleri içeriyorsa, onu tek tırnak işaretleri içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamamasını söyler.
- Tip :
String[]
- Takma adlar:
PSPath
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-SourcePathOrExtension
Bu parametre, Set-AuthenticodeSignature'un türetildiği temel sınıfta tanımlandığı için sözdizimi listesinde görünür. Ancak bu parametreye yönelik destek Set-AuthenticodeSignature'da uygulanmamıştır.
- Tip :
String[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-TimestampServer
İmzaya zaman damgası eklemek için belirtilen zaman damgası sunucusunu kullanır. Zaman damgası sunucusunun URL'sini dize olarak yazın. URL, https:// veya http:// ile başlamalıdır.
Zaman damgası, sertifikanın dosyaya eklendiği tam zamanı temsil eder. Kullanıcılar ve programlar, imzalama sırasında sertifikanın geçerli olduğunu doğrulayabildiğinden, sertifikanın süresi dolarsa zaman damgası komut dosyasının başarısız olmasını önler.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-WhatIf
Cmdlet çalıştırılırsa ne olacağını gösterir. Cmdlet çalıştırılmıyor.
- Tip :
SwitchParameter
- Takma adlar:
wi
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
Girişler
Dize
Bu cmdlet'e dosya yolunu içeren bir dize aktarabilirsiniz.
Çıkışlar
İmza
Bu cmdlet, ayarladığı değeri temsil eden bir İmza nesnesi döndürür.
Notlar
Bu cmdlet yalnızca Windows platformlarında kullanılabilir.