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

Bu cmdlet yalnızca Windows platformunda kullanılabilir.

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
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert

İ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, Set-AuthenticodeSignature betiğini imzalamak için PSTestInternet2.ps1 cmdlet'ini kullanır. Sertifikanın değişkeninde depolandığını belirtmek üzere betiğin adını ve Sertifika parametresini belirtmek için $cert parametresini kullanır.

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
Set-AuthenticodeSignature -FilePath ServerProps.ps1 -Certificate $cert

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

İkinci komut, betiği imzalamak için Set-AuthenticodeSignature kullanır. Set-AuthenticodeSignature parametresi, imzalanan betik dosyasının yolunu belirtir, ve değişkenini içeren sertifikayı $cert'a geçirmek için Set-AuthenticodeSignature parametresini kullanır.

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.

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.

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ı.

Parametre özellikleri

Tür:String
Default value:SHA256
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, LP

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.

Uyarı

PowerShell 7.3, bu parametreye sahip https:// URL desteği ekledi. Ancak, temel alınan API HTTPS'yi desteklemez. HTTPS kullanıyorsanız, komut bir hata döndürür, ancak dosya zaman damgası olmadan imzalanır. Daha fazla bilgi için bkz. Sorun #25130.

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.

Notlar

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