Set-AuthenticodeSignature
Menambahkan tanda tangan Authenticode ke skrip PowerShell atau file lainnya.
Sintaks
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>]
Deskripsi
Cmdlet ini hanya tersedia di platform Windows.
Set-AuthenticodeSignature
Cmdlet menambahkan tanda tangan Authenticode ke file apa pun yang mendukung Paket Antarmuka Subjek (SIP).
Dalam file skrip PowerShell, tanda tangan mengambil bentuk blok teks yang menunjukkan akhir instruksi yang dijalankan dalam skrip. Jika ada tanda tangan dalam file ketika cmdlet ini berjalan, tanda tangan tersebut akan dihapus.
Contoh
Contoh 1 - Menandatangani skrip menggunakan sertifikat dari penyimpanan sertifikat lokal
Perintah ini mengambil sertifikat penandatanganan kode dari penyedia sertifikat PowerShell dan menggunakannya untuk menandatangani skrip PowerShell.
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
$signingParameters = @{
FilePath = 'PsTestInternet2.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
}
Set-AuthenticodeSignature @signingParameters
Perintah pertama menggunakan Get-ChildItem
cmdlet dan penyedia sertifikat PowerShell untuk mendapatkan sertifikat di Cert:\CurrentUser\My
subdirektori penyimpanan sertifikat. Drive Cert:
adalah drive yang diekspos oleh penyedia sertifikat. Parameter CodeSigningCert , yang hanya didukung oleh penyedia sertifikat, membatasi sertifikat yang diambil untuk mereka yang memiliki otoritas penandatanganan kode. Perintah menyimpan hasil dalam $cert
variabel.
Perintah kedua mendefinisikan $signingParameters
variabel sebagai HashTable dengan parameter untuk Set-AuthenticodeSignature
cmdlet untuk menandatangani PSTestInternet2.ps1
skrip. Ini menggunakan parameter FilePath untuk menentukan nama skrip, parameter Sertifikat untuk menentukan bahwa sertifikat disimpan dalam $cert
variabel, dan parameter HashAlgorithm untuk mengatur algoritma hashing ke SHA256.
Perintah ketiga menandatangani skrip dengan memercikkan parameter yang ditentukan dalam $signingParameters
.
Catatan
Menggunakan parameter CodeSigningCert dengan Get-ChildItem
hanya mengembalikan sertifikat yang memiliki otoritas penandatanganan kode dan berisi kunci privat. Jika tidak ada kunci privat, sertifikat tidak dapat digunakan untuk penandatanganan.
Contoh 2 - Menandatangani skrip menggunakan sertifikat dari file PFX
Perintah ini menggunakan Get-PfxCertificate
cmdlet untuk memuat sertifikat penandatanganan kode. Kemudian, gunakan untuk menandatangani skrip PowerShell.
$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
$signingParameters = @{
FilePath = 'ServerProps.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
}
Set-AuthenticodeSignature @signingParameters
Perintah pertama menggunakan Get-PfxCertificate
cmdlet untuk memuat sertifikat C:\Test\MySign.pfx ke $cert
dalam variabel.
Perintah kedua mendefinisikan $signingParameters
variabel sebagai HashTable dengan parameter untuk Set-AuthenticodeSignature
cmdlet untuk menandatangani ServerProps.ps1
skrip. Ini menggunakan parameter FilePath untuk menentukan nama skrip, parameter Sertifikat untuk menentukan bahwa sertifikat disimpan dalam $cert
variabel, dan parameter HashAlgorithm untuk mengatur algoritma hashing ke SHA256.
Perintah ketiga menandatangani skrip dengan memercikkan parameter yang ditentukan dalam $signingParameters
.
Jika file sertifikat dilindungi kata sandi, PowerShell akan meminta kata sandi.
Contoh 3 - Tambahkan tanda tangan yang menyertakan otoritas akar
Perintah ini menambahkan tanda tangan digital yang mencakup otoritas akar dalam rantai kepercayaan, dan ditandatangani oleh server tanda waktu pihak ketiga.
$signingParameters = @{
FilePath = 'C:\scripts\Remodel.ps1'
Certificate = $cert
HashAlgorithm = 'SHA256'
IncludeChain = 'All'
TimestampServer = 'http://timestamp.fabrikam.com/scripts/timstamper.dll'
}
Set-AuthenticodeSignature @signingParameters
Perintah pertama mendefinisikan $signingParameters
variabel sebagai HashTable dengan parameter untuk Set-AuthenticodeSignature
cmdlet untuk menandatangani skrip. Ini menggunakan parameter FilePath untuk menentukan jalur ke skrip, parameter Sertifikat untuk menentukan bahwa sertifikat disimpan dalam $cert
variabel, dan parameter HashAlgorithm untuk mengatur algoritma hashing ke SHA256. Ini menggunakan parameter IncludeChain untuk menyertakan semua tanda tangan dalam rantai kepercayaan, termasuk otoritas akar. Ini juga menggunakan parameter TimeStampServer untuk menambahkan tanda waktu ke tanda tangan. Ini mencegah skrip gagal ketika sertifikat kedaluwarsa.
Perintah kedua menandatangani skrip dengan memercikkan parameter yang ditentukan dalam $signingParameters
.
Parameter
-Certificate
Menentukan sertifikat yang akan digunakan untuk menandatangani skrip atau file. Masukkan variabel yang menyimpan objek yang mewakili sertifikat atau ekspresi yang mendapatkan sertifikat.
Untuk menemukan sertifikat, gunakan Get-PfxCertificate
atau gunakan Get-ChildItem
cmdlet di drive Sertifikat Cert:
. Jika sertifikat tidak valid atau tidak memiliki code-signing
otoritas, perintah gagal.
Type: | X509Certificate2 |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Content
Parameter ini muncul dalam daftar sintaks karena didefinisikan dalam kelas dasar yang Set-AuthenticodeSignature
berasal. Namun, dukungan untuk parameter ini tidak diimplementasikan dalam Set-AuthenticodeSignature
.
Type: | Byte[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-FilePath
Menentukan jalur ke file yang sedang ditandatangani.
Type: | String[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Memungkinkan cmdlet menambahkan tanda tangan ke file baca-saja. Bahkan menggunakan parameter Paksa , cmdlet tidak dapat mengambil alih pembatasan keamanan.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HashAlgorithm
Menentukan algoritma hash yang digunakan Windows untuk menghitung tanda tangan digital untuk file tersebut.
Defaultnya adalah SHA1. File yang ditandatangani dengan algoritma hash yang berbeda mungkin tidak dikenali pada sistem lain. Algoritma mana yang didukung tergantung pada versi sistem operasi.
Untuk daftar nilai yang mungkin, lihat HashAlgorithmName Struct.
Type: | String |
Position: | Named |
Default value: | Null |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeChain
Menentukan sertifikat mana dalam rantai kepercayaan sertifikat yang disertakan dalam tanda tangan digital. NotRoot adalah default.
Nilai yang valid adalah:
- Penanda tangan: Hanya menyertakan sertifikat penanda tangan.
- NotRoot: Mencakup semua sertifikat dalam rantai sertifikat, kecuali untuk otoritas akar.
- Semua: Menyertakan semua sertifikat dalam rantai sertifikat.
Type: | String |
Position: | Named |
Default value: | NotRoot |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Menentukan jalur ke file yang sedang ditandatangani. Tidak seperti FilePath, nilai parameter LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SourcePathOrExtension
Parameter ini muncul dalam daftar sintaks karena didefinisikan dalam kelas dasar yang Set-AuthenticodeSignature
berasal. Namun, dukungan untuk parameter ini tidak diimplementasikan dalam Set-AuthenticodeSignature
.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-TimestampServer
Menggunakan server stempel waktu yang ditentukan untuk menambahkan stempel waktu ke tanda tangan. Ketik URL server stempel waktu sebagai string.
Stempel waktu mewakili waktu yang tepat bahwa sertifikat ditambahkan ke file. Stempel waktu mencegah skrip gagal jika sertifikat kedaluwarsa karena pengguna dan program dapat memverifikasi bahwa sertifikat valid pada saat penandatanganan.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
Anda dapat menyalurkan string yang berisi jalur file ke cmdlet ini.
Output
Cmdlet ini mengembalikan objek Tanda Tangan yang mewakili nilai yang ditetapkannya.
Catatan
Cmdlet ini hanya tersedia di platform Windows.
Link Terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk