सवाल PowerShell स्क्रिप्ट्स पर हस्ताक्षर करने में असमर्थ


मुझे PowerShell में साइन इन करने के लिए मेरी स्क्रिप्ट नहीं मिल रही हैं। मेरे पास मेरी मशीन पर एक वैध कोड हस्ताक्षर प्रमाणपत्र स्थापित है और निम्न आदेश चलाएं। कोई सुझाव?

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

7
2017-08-09 19:33


मूल


जानकार अच्छा लगा। मैं आपके प्रश्न पर एक नज़र डाल रहा था क्योंकि मैं पीसी पर एक प्रशासक के बिना, मेरी स्क्रिप्ट पर हस्ताक्षर नहीं कर सकता। मैंने इसके बारे में यहां पूछा: superuser.com/questions/174878/... - Bratch
जवाब वापस पोस्ट करने के लिए अच्छा सवाल और धन्यवाद। आपको आगे बढ़ना चाहिए और उत्तर अनुभाग में अपना संपादन पोस्ट करना चाहिए और फिर टाइमआउट के बाद इसे सही के रूप में चिह्नित करें ताकि लोग अधिक स्पष्ट रूप से देख सकें कि इस प्रश्न का उत्तर दिया गया है। - Caleb
आईएसई में स्क्रिप्ट संपादित करते समय मुझे सबवर्सन का उपयोग करने की कोशिश करने का एक ही मुद्दा था। सबवर्सन ने शिकायत की कि आईएसई द्वारा सहेजी गई फाइलें 'बाइनरी माइम-टाइप' थीं और उन्हें भंडार में नहीं जोड़ती थीं। मैंने नीचे दिए गए मेरे उत्तर में नोटपैड.एक्सई दृष्टिकोण के लिए एक आसान कामकाज पोस्ट किया है। - Ryan Fisher


जवाब:


पता लगा लिया। स्क्रिप्ट फ़ाइल PowerShell ISE और स्पष्ट रूप से आप का उपयोग करके बनाई गई थी PowerShell ISE में बनाए गए स्क्रिप्ट पर हस्ताक्षर नहीं कर सकते हैं या अधिक सटीक रूप से आप यूनिकोड बिग एंडियन एन्कोडेड फ़ाइलों पर हस्ताक्षर नहीं कर सकते जो आईएसई के लिए डिफ़ॉल्ट है। लिंक में दस्तावेज के रूप में डिफ़ॉल्ट एन्कोडिंग को बदलने के लिए कामकाज है।


मूल रूप से सवाल में जोड़ा गया चाड मिलर। अपने अपडेट को उत्तर में स्थानांतरित कर दिया ताकि यह प्रश्न अब अनुत्तरित के रूप में दिखाई न दे।


4
2018-02-01 10:07



जानना अच्छा है - कि यूनिकोड फ़ाइल एन्कोडिंग समस्या ने मुझे कहीं और काट दिया है (एक बुरी तरह लिखित एक्सएमएल पार्सर)। - Helvick
और मैं दूसरे दिन बीआईएनडी डीएचसीपी के लिए एमएस-डीएचसीपी पट्टे निर्यात करने के लिए एक स्क्रिप्ट लिखते समय। यूनिकोड फिर से। - sysadmin1138♦


आप ISEFile ऑब्जेक्ट की Save () विधि के साथ PowerSll ISE के भीतर से एक विशिष्ट एन्कोडिंग के रूप में फ़ाइल को सहेज सकते हैं:

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

यदि आप अपनी आईएसई प्रोफ़ाइल में निम्नलिखित जोड़ते हैं तो आप अपनी स्क्रिप्ट के लिए एक अलग डिफ़ॉल्ट एन्कोडिंग प्राप्त करने के लिए बस Ctrl-Shift-S दबा सकते हैं:

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

अपनी प्रोफ़ाइल बनाने के लिए यहां कुछ क्विक कोड दिए गए हैं यदि यह मौजूद नहीं है और मेनू जोड़ें। इस कोड को आईएसई के भीतर से चलाएं या आप बस अपने कंसोलहोस्ट प्रोफाइल में जंक जोड़ देंगे जहां यह केवल त्रुटि होगी:

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

3