Tidak Dapat Menandatangani Skrip PowerShell

8

Tampaknya saya tidak bisa membuat skrip saya masuk ke PowerShell. Saya memiliki sertifikat penandatanganan kode yang valid yang diinstal pada mesin saya dan menjalankan perintah berikut. Ada saran?

PS C:\Users\u00\bin> $cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
PS C:\Users\u00\bin> $cert | fl


Subject      : E=operations@contoso.com, CN=contoso , OU=Operations, O=contoso,
               L=Mayberry, S=Florida, C=US
Issuer       : CN=contoso Intermediate CA1, DC=contoso, DC=com
Thumbprint   : XXXXXXXXXXXXXXXXXXXXX
FriendlyName : contoso 
NotBefore    : 7/20/2010 12:58:55 AM
NotAfter     : 7/20/2011 12:58:55 AM
Extensions   : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oi
               ystem.Security.Cryptography.Oid...}



PS C:\Users\u00\bin> Set-AuthenticodeSignature .\testsign.ps1 -Certificate $cert


    Directory: C:\Users\u00\bin


SignerCertificate                         Status                                 Path
-----------------                         ------                                 ----
                                          UnknownError                           testsign.ps1


PS C:\Users\u00\bin> Get-AuthenticodeSignature .\testsign.ps1

    Directory: C:\Users\u00\bin


SignerCertificate                         Status                                 Path
-----------------                         ------                                 ----
                                          NotSigned                              testsign.ps1
Chad Miller
sumber
Senang mendengarnya. Saya memperhatikan pertanyaan Anda karena saya juga tidak dapat menandatangani skrip, tanpa menjadi Administrator di PC. Saya bertanya tentang hal ini di sini: superuser.com/questions/174878/…
Bratch
4
Pertanyaan bagus dan terima kasih telah mengirimkan kembali jawabannya. Anda harus melanjutkan dan memposting hasil edit Anda di bagian jawaban dan kemudian setelah batas waktu menandainya sebagai benar sehingga orang dapat lebih jelas melihat pertanyaan ini telah dijawab.
Caleb
Saya memiliki masalah serupa yang mencoba menggunakan Subversion saat mengedit skrip di ISE. Subversion mengeluh bahwa file yang disimpan oleh ISE adalah 'tipe biner mime' dan tidak akan menambahkannya ke repositori. Saya telah memposting solusi yang lebih halus untuk pendekatan Notepad.exe dalam jawaban saya di bawah ini.
Ryan Fisher

Jawaban:

4

Menemukannya. File skrip dibuat menggunakan PowerShell ISE dan tampaknya Anda tidak dapat menandatangani skrip yang dibuat di PowerShell ISE atau lebih tepatnya Anda tidak dapat menandatangani file yang disandikan Unicode Big Endian yang merupakan default untuk ISE. Ada solusi untuk mengubah pengodean default seperti yang didokumentasikan dalam tautan.


Awalnya ditambahkan ke pertanyaan oleh Chad Miller . Pindahkan pembaruannya ke jawaban sehingga pertanyaan ini tidak lagi muncul sebagai tidak dijawab.

Zoredache
sumber
Baik untuk mengetahui - bahwa masalah pengkodean file Unicode telah menggigit saya di tempat lain (parser XML yang ditulis dengan buruk).
Helvick
Dan saya tempo hari ketika menulis naskah untuk mengekspor sewa MS-DHCP untuk BIND DHCP. Unicode lagi.
sysadmin1138
3

Anda dapat menyimpan file sebagai pengkodean spesifik dari dalam Powershell ISE dengan metode .Save () dari objek ISEFile:

 $psIse.CurrentFile.Save([System.Text.Encoding]::UTF8)

Jika Anda menambahkan yang berikut ini ke profil ISE Anda, Anda bisa menekan Ctrl-Shift-S untuk mendapatkan pengkodean default yang berbeda untuk skrip Anda:

$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add("_Save as UTF8",{$psIse.CurrentFile.Save([System.Text.Encoding]::UTF8)},"Ctrl+Shift+S")

Berikut ini beberapa kode kilat untuk membuat profil Anda jika tidak ada dan tambahkan menu. Jalankan kode ini dari dalam ISE atau Anda hanya akan menambahkan sampah ke profil ConsoleHost Anda di mana itu hanya akan keluar:

add-content $profile -value '$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add("_Save as UTF8",{$psIse.CurrentFile.Save([System.Text.Encoding]::UTF8)},"Ctrl+Shift+S")'
Ryan Fisher
sumber