Set-AuthenticodeSignature
Menambahkan tanda tangan Authenticode ke skrip PowerShell atau file lainnya.
Sintaks
ByPath (Default)
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>]
Deskripsi
Cmdlet ini hanya tersedia di platform Windows.
Cmdlet Set-AuthenticodeSignature 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
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
Perintah pertama menggunakan cmdlet Get-ChildItem dan penyedia Sertifikat PowerShell untuk mendapatkan sertifikat di subdirektori Cert:\CurrentUser\My penyimpanan sertifikat. Drive Cert: adalah drive yang diekspos oleh penyedia Sertifikat. Parameter CodeSigningCert, yang hanya didukung oleh penyedia Sertifikat, membatasi sertifikat yang diambil kepada mereka yang memiliki otoritas penandatanganan kode. Perintah menyimpan hasil dalam variabel $cert.
Perintah kedua menggunakan cmdlet Set-AuthenticodeSignature untuk menandatangani skrip PSTestInternet2.ps1. Ini menggunakan parameter FilePath untuk menentukan nama skrip dan parameter Sertifikat untuk menentukan bahwa sertifikat disimpan dalam variabel $cert.
Nota
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 cmdlet Get-PfxCertificate untuk memuat sertifikat penandatanganan kode. Kemudian, gunakan untuk menandatangani skrip PowerShell.
$cert = Get-PfxCertificate -FilePath C:\Test\Mysign.pfx
Set-AuthenticodeSignature -FilePath ServerProps.ps1 -Certificate $cert
Perintah pertama menggunakan cmdlet Get-PfxCertificate untuk memuat sertifikat C:\Test\MySign.pfx ke dalam variabel $cert.
Perintah kedua menggunakan Set-AuthenticodeSignature untuk menandatangani skrip. Parameter
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 menggunakan parameter FilePath untuk menentukan skrip yang ditandatangani dan parameter Sertifikat untuk menentukan sertifikat yang disimpan dalam variabel $cert. 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.
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 cmdlet Get-ChildItem di drive Sertifikat Cert:. Jika sertifikat tidak valid atau tidak memiliki otoritas code-signing, perintah gagal.
Properti parameter
| Jenis: | X509Certificate2 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Confirm
Meminta konfirmasi sebelum menjalankan cmdlet.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Cf |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Content
Parameter ini muncul dalam daftar sintaks karena didefinisikan dalam kelas dasar tempat Set-AuthenticodeSignature berasal. Namun, dukungan untuk parameter ini tidak diimplementasikan dalam Set-AuthenticodeSignature.
Properti parameter
| Jenis: | Byte[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
ByContent
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-FilePath
Menentukan jalur ke file yang sedang ditandatangani.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
ByPath
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-Force
Memungkinkan cmdlet menambahkan tanda tangan ke file baca-saja. Bahkan menggunakan parameter Force, cmdlet tidak dapat mengabaikan pembatasan keamanan.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-HashAlgorithm
Menentukan algoritma hash yang digunakan Windows untuk menghitung tanda tangan digital untuk file tersebut.
Untuk PowerShell 7.3, defaultnya adalah SHA256, yang merupakan algoritma hashing default Windows. Untuk versi yang lebih lama, 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 struct HashAlgorithmName.
Properti parameter
| Jenis: | String |
| Nilai default: | SHA256 |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-IncludeChain
Menentukan sertifikat mana dalam rantai kepercayaan sertifikat yang disertakan dalam tanda tangan digital. NotRoot adalah default.
Nilai yang valid adalah:
-
Signer: Hanya menyertakan sertifikat penanda tangan. -
NotRoot: Menyertakan semua sertifikat dalam rantai sertifikat, kecuali untuk otoritas akar. -
All: Menyertakan semua sertifikat dalam rantai sertifikat.
Properti parameter
| Jenis: | String |
| Nilai default: | NotRoot |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-LiteralPath
Menentukan jalur ke file yang sedang ditandatangani. Tidak seperti FilePath, nilai parameter LiteralPath digunakan persis seperti yang di ketik. Tidak ada karakter yang ditafsirkan sebagai wildcard. Jika jalur menyertakan karakter escape, bungkus jalur tersebut dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PSPath, LP |
Kumpulan parameter
ByLiteralPath
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-SourcePathOrExtension
Parameter ini muncul dalam daftar sintaks karena didefinisikan dalam kelas dasar tempat Set-AuthenticodeSignature berasal. Namun, dukungan untuk parameter ini tidak diimplementasikan dalam Set-AuthenticodeSignature.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
ByContent
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-TimestampServer
Menggunakan server stempel waktu yang ditentukan untuk menambahkan stempel waktu ke tanda tangan. Ketik URL server stempel waktu sebagai string. URL harus dimulai dengan http://.
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.
Nota
PowerShell 7.3 menambahkan dukungan untuk URL https:// dengan parameter ini. Namun, API yang mendasar tidak mendukung HTTPS. Jika Anda menggunakan HTTPS, perintah mengembalikan kesalahan, tetapi file ditandatangani tanpa stempel waktu. Untuk informasi selengkapnya, lihat Masalah #25130.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-WhatIf
Menunjukkan apa yang akan terjadi ketika cmdlet dijalankan. Cmdlet tidak dijalankan.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | wi |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
String
Anda dapat menyalurkan string yang berisi jalur file ke cmdlet ini.
Output
Signature
Cmdlet ini mengembalikan objek Tanda tangan yang mewakili nilai yang telah ditetapkan oleh cmdlet tersebut.
Catatan
Cmdlet ini hanya tersedia di platform Windows.