खोज…


टिप्पणियों

स्क्रिप्ट पर हस्ताक्षर करने से आपकी स्क्रिप्ट्स PowerShell में सभी एक्साइटमेंट नीतियों का अनुपालन करेगी और स्क्रिप्ट की अखंडता को सुनिश्चित करेगी। यदि हस्ताक्षर किए जाने के बाद उन्हें संशोधित किया गया है, तो हस्ताक्षरित स्क्रिप्ट चलाने में विफल हो जाएगी।

हस्ताक्षर पर हस्ताक्षर करने के लिए एक कोड हस्ताक्षर प्रमाण पत्र की आवश्यकता होती है। अनुशंसाएँ:

  • व्यक्तिगत स्क्रिप्ट / परीक्षण (साझा नहीं): विश्वसनीय प्रमाणित प्राधिकारी (आंतरिक या तृतीय-पक्ष) या स्वयं-हस्ताक्षरित प्रमाण पत्र से प्रमाण पत्र।
  • संगठन के अंदर साझा किया गया: विश्वसनीय प्रमाणित प्राधिकारी (आंतरिक या तृतीय-पक्ष) से प्रमाणपत्र
  • संगठन के बाहर साझा किया गया: विश्वसनीय तृतीय पक्ष प्रमाणित प्राधिकारी से प्रमाणपत्र

@ TechNet के बारे में अधिक पढ़ें

निष्पादन की नीतियां

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

उपलब्ध नीतियां हैं:

स्थापना विवरण
वर्जित कोई स्क्रिप्ट की अनुमति नहीं है
AllSigned सभी लिपियों पर हस्ताक्षर करने की आवश्यकता है
RemoteSigned सभी स्थानीय लिपियों की अनुमति है; केवल दूरस्थ स्क्रिप्ट पर हस्ताक्षर किए
अप्रतिबंधित कोई आवश्यकता नहीं। सभी स्क्रिप्ट की अनुमति है, लेकिन इंटरनेट से डाउनलोड की गई स्क्रिप्ट चलाने से पहले चेतावनी देंगे
उपमार्ग सभी लिपियों की अनुमति है और कोई चेतावनी प्रदर्शित नहीं की जाती है
अपरिभाषित वर्तमान कार्यक्षेत्र के लिए वर्तमान निष्पादन नीति निकालें। मूल नीति का उपयोग करता है। यदि सभी नीतियां अपरिभाषित हैं, तो प्रतिबंधित का उपयोग किया जाएगा।

आप का उपयोग वर्तमान निष्पादन नीतियों को संशोधित कर सकते हैं Set-ExecutionPolicy -cmdlet, समूह नीति या -ExecutionPolicy जब एक शुरू करने पैरामीटर powershell.exe प्रक्रिया।

के बारे में और अधिक पढ़ें_Execution_Polurities @ TechNet

एक स्क्रिप्ट पर हस्ताक्षर

Set-AuthenticodeSignature ऑथेंटिकोडसिग्नेचर -cmdlet और कोड-साइनिंग प्रमाणपत्र का उपयोग करके स्क्रिप्ट पर हस्ताक्षर किया जाता है।

#Get the first available personal code-signing certificate for the logged on user
$cert = @(Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert)[0]
    
#Sign script using certificate
Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1

आप एक .pfx -file का उपयोग करके एक प्रमाणपत्र भी पढ़ सकते हैं:

$cert = Get-PfxCertificate -FilePath "C:\MyCodeSigningCert.pfx"

स्क्रिप्ट तब तक मान्य होगी जब तक कि cetificate समाप्त नहीं हो जाता। यदि आप हस्ताक्षर करने के दौरान टाइमस्टैम्प-सर्वर का उपयोग करते हैं, तो प्रमाणपत्र समाप्त होने के बाद स्क्रिप्ट मान्य रहेगी। अधिकांश कंप्यूटरों को स्क्रिप्ट पर हस्ताक्षर करने के लिए उपयोग किए गए प्रमाणित पर भरोसा करने में मदद करने के लिए प्रमाण पत्र (रूट प्राधिकरण सहित) के लिए विश्वास श्रृंखला को जोड़ना भी उपयोगी है।

Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1 -IncludeChain All -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"

यह एक विश्वसनीय प्रमाण-पत्र प्रदाता से टाइमस्टैम्प-सर्वर का उपयोग करने की सिफारिश की जाती है, जैसे वेरिसाइन, कोमोडो, थावटे आदि।

सेट-एक्ज़ीक्यूशन पॉलीसी का उपयोग करके निष्पादन नीति को बदलना

डिफ़ॉल्ट क्षेत्र (LocalMachine) के लिए निष्पादन नीति को बदलने के लिए, का उपयोग करें:

Set-ExecutionPolicy AllSigned

एक विशिष्ट दायरे के लिए नीति बदलने के लिए, उपयोग करें:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned

आप -Force स्विच जोड़कर संकेतों को दबा सकते हैं।

एकल स्क्रिप्ट के लिए निष्पादन नीति को दरकिनार करना

अक्सर आपको एक अहस्ताक्षरित स्क्रिप्ट को निष्पादित करने की आवश्यकता हो सकती है जो वर्तमान निष्पादन नीति का अनुपालन नहीं करती है। ऐसा करने का एक आसान तरीका उस एकल प्रक्रिया के लिए निष्पादन नीति को दरकिनार करना है। उदाहरण:

powershell.exe -ExecutionPolicy Bypass -File C:\MyUnsignedScript.ps1

या आप आशुलिपि का उपयोग कर सकते हैं:

powershell -ep Bypass C:\MyUnsignedScript.ps1

अन्य निष्पादन नीतियां:

नीति विवरण
AllSigned केवल एक विश्वसनीय प्रकाशक द्वारा हस्ताक्षरित लिपियों को ही चलाया जा सकता है।
Bypass कोई पाबन्दी नहीं; सभी विंडोज पॉवरशेल स्क्रिप्ट को चलाया जा सकता है।
Default आम तौर पर RemoteSigned , लेकिन ActiveDirectory के माध्यम से नियंत्रित किया जाता है
RemoteSigned डाउनलोड की गई लिपियों को चलने से पहले किसी विश्वसनीय प्रकाशक द्वारा हस्ताक्षरित किया जाना चाहिए।
Restricted कोई स्क्रिप्ट नहीं चल सकती। Windows PowerShell का उपयोग केवल इंटरैक्टिव मोड में किया जा सकता है।
Undefined NA
Unrestricted * bypass समान

Unrestricted* कैविएट: यदि आप एक बिना स्क्रिप्ट वाली स्क्रिप्ट चलाते हैं, जिसे इंटरनेट से डाउनलोड किया गया था, तो इसके चलने से पहले आपको अनुमति दी जाती है।


अधिक जानकारी यहाँ उपलब्ध है

वर्तमान निष्पादन नीति प्राप्त करें

वर्तमान सत्र के लिए प्रभावी निष्पादन नीति प्राप्त करना:

PS> Get-ExecutionPolicy
RemoteSigned

वर्तमान सत्र के लिए सभी प्रभावी निष्पादन नीतियों की सूची बनाएं:

PS> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

निष्पादन नीति को एक विशिष्ट दायरे के लिए सूचीबद्ध करें, पूर्व। प्रक्रिया:

PS> Get-ExecutionPolicy -Scope Process
Undefined

हस्ताक्षरित स्क्रिप्ट से हस्ताक्षर प्राप्त करना

Get Get-AuthenticodeSignature -cmdlet का उपयोग करके एक हस्ताक्षरित स्क्रिप्ट से प्रमाणिक हस्ताक्षर के बारे में जानकारी प्राप्त करें:

Get-AuthenticodeSignature .\MyScript.ps1 | Format-List *

परीक्षण के लिए एक स्व-हस्ताक्षरित कोड हस्ताक्षर प्रमाण पत्र बनाना

व्यक्तिगत स्क्रिप्ट पर हस्ताक्षर करते समय या परीक्षण कोड पर हस्ताक्षर करते समय यह स्व-हस्ताक्षरित कोड हस्ताक्षर प्रमाणपत्र बनाने के लिए उपयोगी हो सकता है।

5.0

PowerShell 5.0 के साथ शुरुआत करके आप New-SelfSignedCertificate का उपयोग करके एक स्व-हस्ताक्षरित कोड हस्ताक्षर प्रमाणपत्र उत्पन्न कर सकते हैं:

New-SelfSignedCertificate -FriendlyName "StackOverflow Example Code Signing" -CertStoreLocation Cert:\CurrentUser\My -Subject "SO User" -Type CodeSigningCert

पहले के संस्करणों में, आप .NET फ्रेमवर्क एसडीके और विंडोज एसडीके में पाए गए makecert.exe टूल का उपयोग करके एक स्व-हस्ताक्षरित प्रमाण पत्र बना सकते हैं।

एक स्व-हस्ताक्षरित सेरिटेट केवल उन कंप्यूटरों द्वारा भरोसा किया जाएगा जिन्होंने प्रमाण पत्र स्थापित किया है। साझा की जाने वाली लिपियों के लिए, एक विश्वसनीय प्रमाणपत्र प्राधिकरण (आंतरिक या विश्वसनीय तृतीय-पक्ष) से एक प्रमाण पत्र की सिफारिश की जाती है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow