سؤال كيفية تمكين تنفيذ البرامج النصية PowerShell؟


عندما أحاول تنفيذ برنامجي النصي PowerShell ، أتلقى هذا الخطأ:

لا يمكن تحميل الملف C: \ Common \ Scripts \ hello.ps1 بسبب تعطيل تنفيذ البرامج النصية على هذا النظام. يرجى الاطلاع على "الحصول على مساعدة بشأن_الحاقب" لمزيد من التفاصيل.
  على الخط: 1 char: 13
  +. \ hello.ps1 <<<<
      + CategoryInfo: NotSpecified: (:) [] ، PSSecurityException
      + FullyQualifiedErrorId: RuntimeException


190
2018-02-08 18:41


الأصل




الأجوبة:


  1. بدء تشغيل Windows PowerShell مع خيار "تشغيل كمسؤول". يمكن فقط لأعضاء مجموعة المسؤولين على الكمبيوتر تغيير نهج التنفيذ.

  2. تمكين تشغيل البرامج النصية غير الموقعة عن طريق إدخال:

    set-executionpolicy remotesigned
    

سيسمح هذا بتشغيل البرامج النصية غير الموقعة التي تكتبها على الكمبيوتر المحلي وتوقيعها مخطوطات من الإنترنت.

أنظر أيضا تشغيل البرامج النصية في مكتبة Microsoft TechNet.


295
2018-02-08 18:44



+1 لإعادة تحديد الموقع بدلاً من غير مقيد. يمكنك تشغيل البرامج النصية المحلية دون تعريض نفسك للأخطار من أي مكان آخر. - DarrellNorton
شكرا - ساعدني هذا المنصب. ومع ذلك ، بقيت لدي مشاكل أخرى لأنني لم أقم بتشغيل PowerShell "كمسؤول" في win8 - sergeantKK
هل سيؤدي هذا إلى تغيير السياسة بشكل دائم أم يجب علي القيام بذلك في كل مرة أقوم فيها بإعادة تشغيل الكمبيوتر؟ - Ray
هل هناك طريقة لتمكين تنفيذ محدد النصي بوويرشيل؟ لذلك ربما أريد فقط السماح بذلك hello.ps1 من OP ، أو Microsoft.PowerShell_profile.ps1 على مربع المستخدم؟ (أظن أنه يمكن القول إنه يقع تحت نطاق سؤال OP العريض المعترف به (هكتار ، الذي أراه الآن هو ملكك أيضًا!). إذا شعرت أن هذا سؤال جديد ، فيمكنني أن أسأله.) - ruffin
ruffin هل من الممكن أن تسأل سؤالا منفصلا عن هذا؟ يمكنك ربطها هنا. - Pavel Chuchuva


يتم تعيين "نهج التنفيذ الافتراضي" على تقييد ، يمكنك رؤيته عن طريق كتابة:

Get-ExecutionPolicy

يجب عليك كتابة التالي لجعل الانتقال إلى وضع غير مقيد:

Set-ExecutionPolicy unrestricted

أتمنى أن يساعدك هذا


60
2018-02-08 18:43



-1. هذا هو الطريق مفتوحة للغاية للتنفيذ فقط. RemoteSigned هو أفضل. - TomTom
من المنطقي أن يكون توقيع الطلب منطقيًا إذا كنت تتوقع من المستخدم نسخ ولصق نصوص برمجية ضارة من الإنترنت. إذا كنت تفترض أن المستخدم ليس غبيًا ، فإن "remotesigned" لا يضيف أي أمان ويجعل الحياة صعبة. - Guss


على جهاز الكمبيوتر الخاص بي الذي أستخدمه لنشر البرامج النصية ، سأستخدم - غير مقيد على النحو الوارد أعلاه. عند نشر النصوص البرمجية الخاصة بي ، إلى جهاز المستخدم النهائي ، سأقوم فقط بالاتصال بـ powershell مع مفتاح التبديل -executionpolicy:

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1

50
2018-01-14 00:46



قد ترغب في دمج هذه الخدعة مع خدعة متعددة اللغات في ملف .CMD. نرى stackoverflow.com/a/8597794/5314 - Jay Bazuzi
لطيف! لقد تم نشر sfx من صنع winrar rarlabs.com - MDMoore313
سمحت لي هذه الخدعة بتشغيل برنامج بوويرشيل من برنامج جيت باش (MINGW32 bash) - Kamil Szot


يمكننا الحصول على حالة ExecutionPolicy الحالية بواسطة الأمر أدناه:

Get-ExecutionPolicy;

افتراضيا هو محدد. للسماح بتنفيذ برامج PowerShell النصية ، نحتاج إلى تعيين ExecutionPolicy إما باسم الالتفافية أو مطلق.

يمكننا ضبط السياسة للمستخدم الحالي Bypass أو Unrestricted باستخدام أي من أمر PowerShell أدناه:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

مطلق سياسة تحميل جميع ملفات التكوين وتدير جميع البرامج النصية. إذا قمت بتشغيل برنامج نصي غير موقع تم تنزيله من الإنترنت ، فستتم مطالبتك بإذن قبل تشغيله.

بينما في الالتفافية السياسة ، لا يتم حظر أي شيء ولا توجد تحذيرات أو مطالبات أثناء تنفيذ البرنامج النصي. Bypass ExecutionPolicy أكثر استرخاء من غير مقيد.


8
2017-09-07 07:06





اعتمادًا على إصدار Windows وتكوينه ، قد يكون لديك التحذير التالي ، حتى في Unrestricted الوضع:

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the 
Unblock-File cmdlet to allow the script to run without this warning message. 
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

الحل هو استخدام سياسة "تجاوز" ، مع تمكين الأمر التالي:

Set-ExecutionPolicy Bypass

من كابل بيانات:

تجاوز: يتم حظر أي شيء ولا توجد تحذيرات أو مطالبات.

ومن الواضح أن هذا غير آمن ، يرجى فهم المخاطر التي ينطوي عليها.


4
2018-01-21 10:01



كانت هذه الطريقة الوحيدة التي تمكنت من تشغيل البرنامج النصي الخاص بي في بيئة WINE باستخدام برنامج PowerSell 2.0. شكرا لكم. - Wyatt8740


مفتاح reg مع:
ويندوز محرر التسجيل الإصدار 5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ سياسات \ مايكروسوفت \ ويندوز \ بوويرشيل]   "EnableScripts" = dword: 00000001 "ExecutionPolicy" = "Bypass"

و:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

يعمل حقا أيضا.


1
2017-11-29 10:10





السبب في أن مفتاح التسجيل يعمل ، لأنه يقوم بما تقوم به أوامر PS بالضبط. كتابة الأوامر التغييرات على مفاتيح reg. الأوامر أسرع وأسهل بكثير من إنشاء مفتاح reg أو الحفر في التسجيل.


-2
2018-04-05 13:49



هذا هو مجرد خطأ: المفاتيح التي تم ذكرها في إجابات أخرى تغيير سياسة تنفيذ powershells ، مما يتيح تشغيل البرنامج النصي powershell. - Patrick R.