Set-ExecutionPolicy لإدارة سياسات تنفيذ PowerShell

هل سبق لك أن قمت بتنزيل سكريبت PowerShell وتشغيله ، ثم واجهت الرسالة الخطأ السيئة المذكورة أدناه؟ إذا كان الأمر كذلك ، فإنك بحاجة إلى استخدام أمر Set-ExecutionPolicy وهذا البرنامج التعليمي!

PowerShell Script Execution Disabled Error

في هذه المقالة ، ستتعرف على سياسات تنفيذ PowerShell وكيفية إدارتها باستخدام أمر Set-ExecutionPolicy. بحلول نهاية هذه المقالة ، ستعرف ليس فقط كيفية تشغيل السكربتات ولكن أيضًا كيفية استخدام سياسات التنفيذ أيضًا!

تم كتابة هذا البرنامج التعليمي مع الأخذ في الاعتبار Windows PowerShell ، وتم تنفيذ جميع العروض التوضيحية باستخدام Windows PowerShell. سياسات التنفيذ ليست فريدة من نوعها لـ Windows PowerShell ، وهي تعمل بنفس الطريقة في PowerShell 6+. ولكن إذا كنت تعمل مع PowerShell 6+ ، فقد تجد اختلافات صغيرة في السلوك.

ما هي سياسة التنفيذ؟

إذا كنت قد واجهت الخطأ الموضح أعلاه ، فقد واجهت سياسة تنفيذ. سياسات تنفيذ PowerShell هي آلية أمان لحماية نظامك من تشغيل السكربتات الخبيثة. السياسات التنفيذ لا تمنعك من تشغيل كود PowerShell في واجهة المستخدم كقناة ، ولكنها تؤثر فقط على تنفيذ السكربتات.

يقول مايكروسوفت إن سياسة التنفيذ ليست بحقيقة تدابير “أمان” تقنية بل هي بالأحرى بوابة يمكنك فتحها وإغلاقها. بعد كل شيء ، يمكنك تجاوز سياسة التنفيذ المحددة بسهولة ، كما ستتعلم لاحقًا.

تعتمد سياسات التنفيذ على الثقة. إذا كنت تثق في النص البرمجي، فمن المحتمل أنه ليس خبيثًا. عادةً ما لا تمنع سياسات التنفيذ تنفيذ النص البرمجي لـ جميع النصوص. الغرض الأساسي لهذه السياسات (وخاصةً عند تكوينها بصرامة أكبر) هو التأكد من أنك تثق في النص البرمجي الذي تقوم بتشغيله موقع بتوقيعه بشهادة من مصدر موثوق.

نطاقات سياسات التنفيذ

كما تعلمت، تقيد سياسات التنفيذ تنفيذ النصوص، ولكن يمكن لـ PowerShell تنفيذ النصوص في سياقات مختلفة. يقوم PowerShell بتنفيذ النصوص في سياق المستخدم المسجل أو سياق الجهاز العام، عبر المهام المجدولة التي تعمل كنظام أو في نطاق واحد لوحة تحكم PowerShell مفتوحة.

لتوفير مرونة لجميع هذه السياقات، يحتوي PowerShell على خمسة سياقات مختلفة أو نطاقات يمكنك تعريف سياسة تنفيذ فيها.

  • سياسة_الجهاز – يقتصر هذا النطاق على جهاز واحد فقط. يؤثر على جميع المستخدمين الذين يسجلون الدخول إلى هذا الكمبيوتر، وتعيين كائن سياسة مجموعة Active Directory يحدده. عند تعريفه، يأخذ الأسبقية على جميع النطاقات الأخرى.
  • LocalMachine. هذا هو النطاق الافتراضي الذي يؤثر على جميع مستخدمي الكمبيوتر ويتم تخزينه في مفتاح التسجيل HKEY_LOCAL_MACHINE. عند تعيين سياسة التنفيذ باستخدام Set-ExecutionPolicy، يكون هذا النطاق هو الافتراضي.

يتم تخزين سياسة التنفيذ لـ LocalMachine في مفتاح التسجيل HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell.

  • UserPolicy – يؤثر نطاق UserPolicy فقط على مستخدم واحد على الكمبيوتر، ويتم تعيينها بواسطة كائن سياسة مجموعة Active Directory. لا يمكنك تغيير هذه السياسة باستخدام Set-ExecutionPolicy.
  • CurrentUser. يحدد نطاق السياسة CurrentUser سياسة التنفيذ فقط للمستخدم الحالي ويتم تخزينها تحت مفتاح التسجيل HKEY_CURRENT_USER. لا يمكنك تغيير هذه السياسة باستخدام Set-ExecutionPolicy.

يتم تخزين سياسة التنفيذ لـ CurrentUser في مفتاح التسجيل HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell.

  • Process – يحدد هذا النطاق سياسة التنفيذ لجلسة PowerShell واحدة لمستخدم واحد. نطاق سياسة التنفيذ Process هو أدق سياسة تنفيذ يمكنك تحديدها. على عكس سياسات التنفيذ الأخرى، يتم حفظ هذه السياسة في متغير بيئة يسمى PSExecutionPolicyPreference بدلاً من التسجيل.

أنواع سياسات التنفيذ

سياسات التنفيذ لها مستويات “أمان” مختلفة. تحدد هذه المستويات مدى صرامة سياسة التنفيذ. على سبيل المثال ، يمكن أن يكون لديك سياسة تنفيذ مفعلة لا تفعل شيئًا في الواقع ؛ فهي معطلة. ومن ناحية أخرى ، يمكن لسياسة التنفيذ تعطيل تنفيذ النص بشكل كامل.

لنغطي كل طريقة يمكنك تكوين مستوى أمان سياسة التنفيذ من الأقل إلى الأكثر قيودًا.

غير مقيد

أقل سياسة قيود هي تلك التي لا تؤثر على أي شيء على الإطلاق ؛ إنها غير مقيدة. سياسات التنفيذ غير المقيدة تعطل بشكل أساسي. يمكن للمستخدمين تشغيل جميع النصوص بغض النظر عن الثقة عندما تكون سياسة التنفيذ غير مقيدة.

تجاوز

مثل النوع غير المقيدة ، فإن سياسة التنفيذ المعينة على تجاوز لا تمنع أي شيء.

على الرغم من أن سياسة التنفيذ من النوع تجاوز و غير المقيدة لها تأثير مماثل ، فإن نوع سياسة التنفيذ تجاوز ليس نوعًا فعليًا على الإطلاق. إنه يتجاوز سياسة التنفيذ المعرفة مسبقًا.

غير معرف

على الرغم من أنها غير مستخدمة بشكل شائع ، يمكنك ببساطة إزالة سياسة التنفيذ عن طريق تعيينها على غير معرفة. عندما تقوم بتعيين سياسة التنفيذ على غير معرفة ، يقوم PowerShell بإزالة تلك السياسات من نطاق التنفيذ المعين بشكل كامل.

في أجهزة الكمبيوتر غير الويندوز ، يتم تعيين سياسة التنفيذ دائمًا على غير مقيدة ولا يمكن تغييرها.

عندما يتم تعيين جميع النطاقات على “غير معرفة” ، يعامل PowerShell جميع النطاقات على أنها “مقيدة”.

RemoteSigned

كما قرأت سابقاً، تتعلق سياسات التنفيذ بالثقة المكتسبة عبر التوقيع الرقمي على النصوص البرمجية. تأخذ PowerShell أيضًا في الاعتبار مصدر تلك النصوص. هل تم إنشاؤها على جهاز الكمبيوتر المحلي أم من شخص عشوائي على الإنترنت؟

لا ينبغي أن يكون الثقة ذاتيًا في النصوص المبنية في مكان آخر غير جهاز الكمبيوتر المحلي. هذا هو السبب في أن PowerShell يوفر سياسة التنفيذ RemoteSigned. تفرض سياسة التنفيذ RemoteSigned أن تكون كافة النصوص مكتوبة في مكان آخر غير جهاز الكمبيوتر المحلي موقعة بشكل تشفيري.

يمكنك تجاوز سياسة التنفيذ هذه إلى حد ما للملفات المُنزّلة من الإنترنت باستخدام الأمر Unblock-File.. احصل على مزيد من المعلومات حول هذا السلوك في قسم كيفية عمل سياسة RemoteSigned.

بالنسبة لخادم Windows، تُعيَّن سياسة RemoteSigned كالسياسة الافتراضية.

AllSigned

إذا كنت ترغب في ضمان توقيع جميع النصوص البرمجية في PowerShell بشكل تشفيري، فقم بتعيين سياسة التنفيذ إلى AllSigned. على غرار سياسة RemoteSigned، تأخذ سياسة التنفيذ هذه متطلبات التوقيع خطوة إضافية وتفرض توقيع جميع النصوص قبل التنفيذ.

حتى إذا كانت سياسة التنفيذ AllSigned مُعيَّنة، يمكنك ما زال التجاوز عن سياسة التنفيذ، كما ستتعلم لاحقًا.

Restricted

أكثر سياسة تنفيذ مقيدة هي مقيدة. عندما تكون سياسة التنفيذ مقيدة، لا يمكن تنفيذ أي سكربتات على الإطلاق؛ بغض النظر عما إذا كانت موثوقة أم لا. هذه السياسة تعطل تنفيذ السكربتات تمامًا.

علاوة على ذلك، على عكس أنواع أقل قيداً، فإن النوع المقيد يضمن عدم تنفيذ ملفات تنسيق وتكوين PowerShell (PS1XML)، وملفات سكربتات الوحدة (PSM1)، وملفات الملفات الشخصية لـ PowerShell.

جميع عملاء ويندوز، بشكل افتراضي، مُعينة على سياسة تنفيذ مقيدة.

تقنيًا، تحدد مايكروسوفت سابع سياسة تنفيذ تسمى “الافتراضية”، ولكن النوع هو في الأساس عبارة أخرى لـ “موقَّع بعيد” (على خوادم ويندوز) و “مقيد” (على عملاء ويندوز).

كيف تعمل سياسة “الموقَّع بعيد”

سيناريو معين يجب أن نشير إليه هو كيف تعمل سياسة التنفيذ “الموقَّع بعيد” (كما تعلمت)؛ حيث تمنع تشغيل السكربتات التي تم إنشاؤها في مكان آخر غير جهاز الكمبيوتر المحلي.

ولكن كيف يعرف PowerShell أن السكربت تم إنشاؤه في مكان آخر؟ من خلال تدفقات البيانات.

فهم واستعلام تدفقات البيانات في نظام ملفات NTFS

عندما تقوم بإنشاء ملف في نظام الملفات NTFS، يطبق NTFS سمة تدفق بيانات بديلة (ADS) على الملف. يحتوي التدفق البيانات البديل على سمتين للملف: $Data و zone.Identifier. يستخدم PowerShell سمة zone.Identifier لتحديد ما إذا كان ملف سكربت PowerShell تم إنشاؤه في مكان آخر.

بعكس السمات الأخرى مثل “مضغوط” أو “للقراءة فقط”، فإن سمات ADS (مساحات بيانات إضافية) مخفية في مستكشف الملفات. ولكن، باستخدام PowerShell، يمكنك فحص هذه المساحات.

قم بتشغيل أمر “Get-Item” باستخدام مسار النص والمعامل “Stream” كما هو موضح أدناه. في هذا المثال، تم كتابة “Hello World.ps1” على الكمبيوتر المحلي. لاحظ أن السمة الوحيدة المسندة إلى خاصية “Stream” هي “$DATA”. لا توجد سمة ADS.

Get-Item '.\Hello World.ps1' -Stream *
ADS Stream output for local file

الآن، قم بتشغيل نفس الأمر على نص محمل من الإنترنت. لاحظ الآن أن “Get-Item” يعيد كائنًا آخر تمامًا بخاصية “Stream” بقيمة “Zone.Identifier”.

ADS Stream output for PowerShell file downloaded from internet

بمجرد أن تعرف أن الملف يحتوي على مساحة بيانات إضافية، يمكنك ثم استخدام أمر “Get-Content” لاكتشاف “المنطقة”. تحدد المنطقة مصدر الملف.

Get-Content .\Get-CertDetails.ps1 -Stream zone.identifier

سيعيد “Get-Content” قيمة “ZoneId” تمثل منطقة الملف المصدر.

Zone ID Value

تشمل القيم الممكنة للمنطقة:

Zone ID Zone
------- ---------------------
0       My Computer
1       Local Intranet Zone
2       Trusted sites Zone
3       Internet Zone
4       Restricted Sites Zone

ترتيب السياسات المسبقة

كما تم شرحه أعلاه، توجد العديد من سياسات التنفيذ المختلفة في وقت واحد. عندما يكون لديك العديد من سياسات التنفيذ قيد التنفيذ، يجب أن يكون لديك أولوية.

أولوية السياسة هي الترتيب الذي يطبق به PowerShell سياسات مختلفة تم تعيينها في نطاقات مختلفة. بعض سياسات التنفيذ لديها أولوية أعلى من الأخرى.

عند تشغيل Get-ExecutionPolicy -List ، ستجد جميع سياسات التنفيذ التي تعمل حاليًا مرتبة من أقل أولوية إلى أعلى. على سبيل المثال ، نظرًا لأن MachinePolicy لديها أولوية أقل ، فإن سياسات LocalMachine و CurrentUser ستتجاوزها.

Get-ExecutionPolicy cmdlet output

العمل مع سياسات التنفيذ

بمجرد فهمك لخلفية سياسات التنفيذ ، دعنا نتعمق الآن في كيفية العمل معها! للعمل مع سياسات تنفيذ PowerShell ، لديك أمرين في تصرفك Get-ExecutionPolicy لاكتشاف السياسات المحددة حاليًا و Set-ExecutionPolicy لتعيين سياسات جديدة.

الحصول على السياسات المعينة حاليًا

قبل أن تتمكن من بدء تغيير سياسات التنفيذ ، تحتاج إلى معرفة ما تعمل به. للقيام بذلك ، لديك أمر Get-ExecutionPolicy. هذا الأمر يعرض جميع السياسات المعينة حاليًا على الكمبيوتر.

عند تشغيل الأمر Get-ExecutionPolicy مباشرةً في نافذة PowerShell بدون معلمات ، سيظهر سياسة التنفيذ المحددة لجلسة PowerShell الحالية.

Get-ExecutionPolicy cmdlet output

لعرض السياسة التنفيذية المعينة لنطاق معين ، قم بتحديد المعلمة Scope باستخدام اسم النطاق الذي ترغب في رؤية النتائج له.

Get-ExecutionPolicy -Scope Process
Get-ExecutionPolicy -Scope LocalMachine
Get-ExecutionPolicy cmdlet with scope parameter output

لعرض جميع النطاقات وسياسات التنفيذ الخاصة بها ، استخدم المعلمة List كما هو موضح أدناه.

Get-ExecutionPolicy -list
Get-ExecutionPolicy cmdlet displaying all scopes

تغيير سياسات التنفيذ

بمجرد معرفتك بالسياسات التنفيذية المعينة حاليًا ، يمكنك أيضًا تغييرها. لتغيير السياسة على جهاز كمبيوتر واحد ، يمكنك استخدام الأمر Set-ExecutionPolicy. ولكن إذا كنت في مؤسسة ، فسترغب في تغيير السياسات بشكل جماعي. إذا كانت هذه هي الحالة ، فلديك دائمًا سياسة المجموعة إذا كنت في نطاق Active Directory.

استخدام Set-ExecutionPolicy

دعنا نبدأ أولاً في كيفية تغيير السياسات باستخدام الأمر Set-ExecutionPolicy. للقيام بذلك ، افتح برنامج PowerShell كمسؤول.

قم الآن بتشغيل الأمر Set-ExecutionPolicy بمعلمة واحدة (ExecutionPolicy) وتوفير اسم السياسة التنفيذية.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

سيطلب برنامج PowerShell بعد ذلك ما إذا كنت ترغب في تغيير سياسة التنفيذ. إذا كنت ترغب في ذلك ، اكتب Y أو A واضغط على Enter.

Change Execution Policy

بعض أوامر PowerShell تحتاج إلى تشغيل مهام متعددة أخرى للعمل. إذا قمت بإدخال Y في المثال أعلاه ، قد يطلب منك برنامج PowerShell الاستمرار لكل خطوة. إذا ضغطت A ، فسيستمر في جميع الخطوات التالية.

تشغيل الأمر Set-ExecutionPolicy بدون استدراجات

افتراضيًا، عند تشغيل Set-ExecutionPolicy ، سيتم طلب منك ما إذا كنت ترغب في تغيير سياسة التنفيذ أم لا. يمكنك تجاوز هذا الطلب عن طريق إضافة معلمة Force إلى الأمر الخاص بك. باستخدام معلمة Force ستمنع جميع رسائل التأكيد.

Set-ExecutionPolicy RemoteSigned -Force
Output of Set-ExecutionPolicy command when Force Parameter is used

ضبط سياسة تنفيذ PowerShell عبر التسجيل

نظرًا لأن معظم سياسات التنفيذ مخزنة في التسجيل (باستثناء Process)، يمكنك أيضًا تغيير السياسات مباشرة عبر التسجيل.

لتغيير سياسات التنفيذ عبر التسجيل:

  1. افتح محرر التسجيل في نظام التشغيل Windows (regedit) أو أداة تحرير التسجيل التي تفضلها.

2. انتقل إلى مفتاح التسجيل لنطاق سياسة التنفيذ الذي ترغب في تغييره.

LocalMachineHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell

CurrentUserHKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell

3. انقر بزر الماوس الأيمن على المفتاح في التسجيل وأنشئ قيمة سلسلة جديدة تسمى ExecutionPolicy.

4. قم بالنقر المزدوج على قيمة السلسلة الجديدة ExecutionPolicy وأدخل اسم سياسة التنفيذ المطلوبة (Restricted, RemoteSigned, AllSigned, Unrestricted, or Undefined).

5. قم بإنشاء قيمة سلسلة أخرى في نفس المفتاح تسمى Path. قيمة سلسلة Path تمثل مسار محرك PowerShell. تأكد من أن قيمة Path هي C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe والتي تشير إلى محرك PowerShell في نظام التشغيل ويندوز.

Registry path for ExecutionPolicy in registry for current user

سياسة التنفيذ الحالية للمستخدم تتجاوز سياسة الماكينة المحلية. إذا كانت هناك سياسة محددة للمستخدم الحالي في التسجيل وحاولت تغيير سياسة التنفيذ باستخدام Set-ExecutionPolicy، والذي بشكل افتراضي يضبط السياسة على نطاق LocalMachine، فسوف يعيد PowerShell خطأ موضح أدناه.

Execution Policy Permission Denied

ضبط سياسة تشغيل PowerShell عبر سياسة المجموعة

إذا كنت في منظمة تستخدم Active Directory، فلن ترغب في القيام بذلك يدويًا على جميع أجهزة الويندوز الخاصة بك وتشغيل سطر الأوامر Set-ExecutionPolicy. بدلاً من ذلك، يمكنك إدارة السياسات بشكل جماعي باستخدام سياسة المجموعة.

لإدارة سياسات التنفيذ عبر سياسة المجموعة:

قم بإنشاء كائن سياسة المجموعة

  1. افتح تطبيق إدارة سياسة المجموعة على خادم تحكم المجال أو على جهاز العمل الانضمام إلى المجال الخاص بك.
Group Policy Management Console

2. قم بتوسيع Domains -> <اسم غابة Active Directory الخاصة بك> -> كائنات سياسة المجموعة.

Select Group Policy Objects node

3. انقر بزر الماوس الأيمن على كائنات سياسة المجموعة وانقر على جديد.

4. قم بإعطاء سياسة المجموعة الخاصة بك اسمًا. في هذا البرنامج التعليمي، يُطلق على سياسة المجموعة اسم سياسة تنفيذ PowerShell.

Create new Group Policy Object

5. انقر بزر الماوس الأيمن على سياسة المجموعة الجديدة وانقر فوق تعديل.

6. انتقل إلى تكوين الكمبيوتر\السياسات\القوالب الإدارية\مكونات Windows\Windows PowerShell.

Navigate to the setting in Group Policy Object

7. افتح الإعداد في نافذة الجانب الأيمن، وافتح الإعداد تشغيل تنفيذ النصوص.

Turn on Script Execution Policy

8. في مربع تشغيل تنفيذ النصوص، حدد الخيار تمكين. يمكنك الآن تحديد أيًا من الخيارات المعروضة أدناه:

9. قم الآن بتغيير سياسة التنفيذ إلى السياسة التي ترغب فيها.

  • السماح فقط بتنفيذ النصوص الموقعة – يسمح بتنفيذ جميع النصوص عند توقيعها من قبل مُنشئ موثوق به.
  • السماح بتشغيل النصوص المحلية والنصوص الموقعة عن بُعد – يسمح بتشغيل النصوص المحلية ولكن يجب أن تكون النصوص التي تم تنزيلها من الإنترنت موقعة من قبل مُنشئ موثوق به.
  • السماح بجميع النصوص – يسمح بتشغيل جميع النصوص.
List Execution Policy

تعيين كائن سياسة المجموعة

بمجرد إنشاء سياسة المجموعة، حان الوقت لتعيينها لأجهزة الهدف الخاصة بك. للقيام بذلك، يجب أن تعين سياسة المجموعة إلى وحدة تنظيمية للدليل النشط (OU).

إذا قمت بتعديل سياسة المجموعة الحالية بدلاً من إنشاء سياسة جديدة، فقد تم تعيين سياسة المجموعة تلقائيًا إلى وحدة تنظيمية (OU).

  1. في إدارة سياسة المجموعة، انتقل إلى وحدة التنظيم الخاصة بك عن طريق الانتقال إلى النطاقات -> <النطاق الخاص بالدليل النشط> -> <وحدة التنظيم الخاصة بك>.

2. انقر بزر الماوس الأيمن على وحدة التنظيم وحدد ربط سياسة المجموعة الموجودة…

Link an Existing GPO…

3. حدد سياسة المجموعة التي تم إنشاؤها للتو (سياسة تنفيذ PowerShell) وانقر على موافق.

Select the GPO

يجب أن ترى الآن سياسة المجموعة المعينة لوحدة التنظيم كما هو موضح أدناه.

Link the Group Policy Object

في هذه النقطة، يمكنك إما الانتظار لفترة التحديث المعرفة مسبقًا لـ سياسة المجموعة أو تشغيل الأمر gpupdate على الكمبيوتر المستهدف لإجبار التحديث.

تأمين تغييرات السياسة المحلية

بمجرد أن تكون سياسة المجموعة سارية المفعول وتغير سياسة التنفيذ، لا يمكن للمستخدمين المحليين تغيير السياسة عبر وحدة تحكم PowerShell المحلية. إذا حاولوا ذلك، ستظهر لهم رسالة خطأ كما هو موضح أدناه.

Error on trying to changing execution policy manually

تجاوز سياسة التنفيذ بالكامل

كما ذكرت سابقًا، فإن سياسة التنفيذ ليست بالضرورة تدابير أمنية. لماذا؟ لأنه يمكنك تجاوزها تمامًا إذا رغبت في ذلك ببضع طرق مختلفة.

باستخدام -ExecutionPolicy Bypass المعامل

بالاختلاف عن سياسات التنفيذ الأخرى، سياسة “تجاوز” عادة ما تُعيَّن ليس في وحدة التحكم PowerShell بل يتم تمريرها إلى محرك “powershell.exe” الذي يتم تشغيله كمسؤول.

على سبيل المثال، لتشغيل سكربت يسمى “Hello World.ps1” وتجاوز أي سياسة تنفيذ، استدعِ “powershell.exe” واستخدم معامل “تجاوز” وحدد مسار الملف كما هو موضح أدناه.

powershell.exe -executionpolicy bypass -file '.\Hello World.ps1'
ByPass Execution Policy using bypass execution policy

قراءة السكربتات وتنفيذ رمز غير مُعالج

يمكنك أيضًا تجاوز أي سياسة تنفيذ عن طريق قراءة محتويات السكربت أولاً ثم تمرير تلك المحتويات مباشرة إلى محرك PowerShell. عند القيام بذلك، يتم تشغيل كل أمر بشكل فردي وليس كسكربت كامل في آن واحد.

كما يمكن ملاحظة أن سياسة التنفيذ مُعينة على “مقيد”، ولكن بقراءة السكربت وتمريره إلى “powershell.exe”، فإنه لا يزال يعمل.

هذه الطريقة مشابهة لفتح سكربت في محرر PowerShell مثل PowerShell ISE أو Visual Studio Code وتحديد سطر ثم الضغط على F8.

Get-Content '.\Hello World.ps1' | powershell.exe -noprofile
Alternative way to Bypass Execution Policy

الاستنتاج

الآن يجب أن تكون على دراية بكل ما يتعلق بسياسات تنفيذ PowerShell. على الرغم من أنها ليست إجراء أمان تقنيًا، يجب عليك لا تزال إدارتها في منظمتك وفقًا للسياسات المؤسسية.

Source:
https://adamtheautomator.com/set-executionpolicy/