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

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 menggunakan Set-AuthenticodeSignature cmdlet untuk menandatangani PSTestInternet2.ps1 skrip. Ini menggunakan parameter FilePath untuk menentukan nama skrip dan parameter Sertifikat untuk menentukan bahwa sertifikat disimpan dalam $cert variabel.

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

Perintah pertama menggunakan Get-PfxCertificate cmdlet untuk memuat sertifikat C:\Test\MySign.pfx ke $cert dalam variabel.

Perintah kedua menggunakan Set-AuthenticodeSignature untuk menandatangani skrip. Parameter Set-AuthenticodeSignature FilePath menentukan jalur ke file skrip yang sedang ditandatangani dan parameter Cert meneruskan $cert variabel yang berisi sertifikat ke Set-AuthenticodeSignature.

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.

Set-AuthenticodeSignature -FilePath c:\scripts\Remodel.ps1 -Certificate $cert -IncludeChain All -TimestampServer "https://timestamp.fabrikam.com/scripts/timstamper.dll"

Perintah menggunakan parameter FilePath untuk menentukan skrip yang sedang ditandatangani dan parameter Sertifikat untuk menentukan sertifikat yang disimpan dalam $cert variabel. 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 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.

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 HashAlgorithmName Struct.

Type:String
Position:Named
Default value:SHA256
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. URL harus dimulai dengan https:// atau 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.

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

String

Anda dapat menyalurkan string yang berisi jalur file ke cmdlet ini.

Output

Signature

Cmdlet ini mengembalikan objek Tanda Tangan yang mewakili nilai yang ditetapkannya.

Catatan

Cmdlet ini hanya tersedia di platform Windows.