Không thể ký tập lệnh PowerShell


8

Tôi dường như không thể có được các tập lệnh của mình để đăng nhập vào PowerShell. Tôi có chứng chỉ ký mã hợp lệ được cài đặt trên máy của mình và chạy các lệnh sau. Bất kỳ đề xuất?

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

Tốt để biết. Tôi đã xem xét câu hỏi của bạn vì tôi cũng không thể ký các tập lệnh của mình mà không phải là Quản trị viên trên PC. Tôi đã hỏi về nó ở đây: superuser.com/questions/174878/ từ
Bratch

4
Câu hỏi hay và cảm ơn vì đã đăng lại câu trả lời. Bạn nên tiếp tục và đăng chỉnh sửa của mình trong phần câu trả lời và sau đó sau khi hết thời gian đánh dấu là chính xác để mọi người có thể thấy rõ hơn câu hỏi này đã được trả lời.
Caleb

Tôi gặp vấn đề tương tự khi cố gắng sử dụng Subversion khi chỉnh sửa tập lệnh trong ISE. Subversion phàn nàn rằng các tệp được lưu bởi ISE là 'loại mime nhị phân' và sẽ không thêm chúng vào kho lưu trữ. Tôi đã đăng một cách giải quyết mượt mà hơn cho cách tiếp cận Notepad.exe trong câu trả lời của tôi dưới đây.
Ryan Fisher

Câu trả lời:


4

Tìm ra. Tệp tập lệnh được tạo bằng PowerShell ISE và rõ ràng bạn không thể ký các tập lệnh được tạo trong PowerShell ISE hoặc chính xác hơn là bạn không thể ký các tệp được mã hóa Unicode Big Endian mặc định cho ISE. Có cách giải quyết để thay đổi mã hóa mặc định như được ghi trong liên kết.


Ban đầu được thêm vào câu hỏi của Chad Miller . Thay đổi bản cập nhật của anh ấy để trả lời để câu hỏi này không còn hiển thị dưới dạng chưa được trả lời.


Điều cần biết - vấn đề mã hóa tệp Unicode đã cắn tôi ở nơi khác (một trình phân tích cú pháp XML được viết xấu).
Helvick

Và một ngày khác, khi tôi viết một kịch bản để xuất MS-DHCP cho thuê BIND DHCP. Lại một lần nữa.
sysadmin1138

3

Bạn có thể lưu tệp dưới dạng mã hóa cụ thể từ bên trong ISE Powershell bằng phương thức .Save () của đối tượng ISEFile:

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

Nếu bạn thêm phần sau vào hồ sơ ISE của mình, bạn có thể chỉ cần nhấn Ctrl-Shift-S để nhận mã hóa mặc định khác cho tập lệnh của mình:

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

Đây là một số mã quickie để tạo hồ sơ của bạn nếu nó không tồn tại và thêm menu. Chạy mã này từ bên trong ISE hoặc bạn sẽ chỉ thêm rác vào hồ sơ Consolehost của mình, nơi nó sẽ báo lỗi:

add-content $profile -value '$psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add("_Save as UTF8",{$psIse.CurrentFile.Save([System.Text.Encoding]::UTF8)},"Ctrl+Shift+S")'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.