شرح سياسة تنفيذ PowerShell

15 سبتمبر 2020 2424 الآراء سياسة التنفيذ بوويرشيل

تصفح مواضيع المنشور

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

ExecutionPolicy في PowerShell هي ميزة أمان تتحكم في كيفية تحميل PowerShell لملفات التكوين وتشغيل البرامج النصية. تساعد ميزات ExecutionPolicy في منع PowerShell من تشغيل البرامج النصية الضارة.

يمكنك تعيين سياسة التنفيذ لجهاز كمبيوتر أو مستخدم أو جلسة. ال مجموعة التنفيذ يمكن استخدام الأمر cmdlet لتعيين ExecutionPolicy. يحتوي الأمر PowerShell.exe أيضًا على معلمة ExecutionPolicy يمكنك استخدامها لتعيين Powershell ExecutionPolicy.

ستتعرف في هذا الدليل على الأنواع المختلفة لسياسات تنفيذ PowerShell. سوف تتعلم أيضًا كيفية استخدام أوامر Set-ExecutionPolicy و PowerShell.exe -ExecutionPolicy.

سياسات التنفيذ المتاحة

يشرح هذا القسم ExecutionPolicy المختلفة التي يمكنك تعيينها في PowerShell وما سيسمح لك كل منها بالقيام به.

مقيد

  • هذه هي سياسة التنفيذ الافتراضية في Windows 8 و Server 2012 والإصدارات الأحدث.
  • يمنع ملفات تكوين PowerShell (.ps1xml) وملفات البرامج النصية للوحدة النمطية (.psm1) وملفات تعريف Windows PowerShell (.ps1) من التنفيذ
  • يسمح بأوامر PowerShell الفردية لكنه يرفض البرامج النصية

الكل موقعة

عند تعيين AllSigned ExecutionPolicy ، PowerShell:

  • يقوم بتشغيل جميع البرامج النصية
  • يتطلب ذلك قبل السماح بتشغيل البرنامج النصي ، يجب أن يتم توقيعه من قِبل ناشر موثوق به. يتضمن هذا البرامج النصية المكتوبة على الكمبيوتر المحلي
  • المطالبات للتأكيد قبل تشغيل برنامج نصي من ناشر لم تؤكده موثوق به
  • قد يتم تشغيل رموز موقعة ولكنها ضارة

عن بعد

RemoteSigned ExecutionPolicy:

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

غير مقيد

  • يسمح بتنفيذ البرامج النصية غير المعينة
  • سوف يحذرك قبل تنفيذ برنامج نصي من الإنترنت
  • مخاطر تشغيل الأكواد أو البرامج النصية الضارة

تجاوز

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

  • لم يتم حظر أي نص برمجي. لا تقدم تحذيرات كذلك.

غير معرف

  • يعني عدم تحديد سياسة التنفيذ
  • ExecutionPolicy الفعال مقيد (افتراضي)

نطاق التنفيذ والأسبقية

يمكنك تطبيق سياسة تنفيذ PowerShell على:

لوكالماكشين : يؤثر فقط على المستخدمين الحاليين. هذا له الأسبقية الأقل

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

معالجة : ينطبق فقط على الجلسة الحالية. يأخذ الأولوية القصوى.

كيفية الحصول على سياسة تنفيذ PowerShell الحالية

للاطلاع على سياسة PowerShell ExecutionPolicy الحالية ، قم بتشغيل الأمر أدناه:

Get-ExecutionPolicy 
كيفية تعيين سياسة التنفيذ باستخدام Set-ExecutionPolicy

لمشاهدة مجموعة ExecutionPolicy لجميع النطاقات ، استخدم هذا الأمر:

Get-ExecutionPolicy -List
كيفية تعيين سياسة التنفيذ باستخدام Set-ExecutionPolicy

يمكنك أيضًا الحصول على سياسة التنفيذ بناءً على النطاق. فيما يلي بعض نماذج الأوامر:

Get-ExecutionPolicy -Scope CurrentUser  
Get-ExecutionPolicy -Scope LocalMachine
Get-ExecutionPolicy -Scope Process

كيفية تعيين سياسة تنفيذ PowerShell

كما ذكرت في المقدمة ، يمكنك تعيين ExecutionPolicy مع Set-ExecutionPolicy cmdlet. يمكنك أيضًا استخدام الأمر PowerShell.exe -ExecutionPolicy.

كيفية تعيين سياسة التنفيذ باستخدام Set-ExecutionPolicy

صيغة الأمر Set-ExecutionPolicy هي:

Set-ExecutionPolicy -ExecutionPolicy 

كمثال ، لتعيين سياسة التنفيذ إلى عن بعد استخدم الأمر أدناه:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

ها هي نتيجة الأمر.

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

هذا هو الأمر الذي تم تنفيذه كمسؤول:

كيفية تعيين نهج التنفيذ باستخدام PowerShell.exe -ExecutionPolicy

كما ترى من الصورة ، فإن سياسة التنفيذ الجديدة هي الآن عن بعد .

من الأمرين الأخيرين ، طُلب مني تأكيد الأمر. لتجاوز هذه المطالبة ، قم بتضمين -فرض معامل.

يتم تنفيذ الأمر الآن بدون المطالبة بالتأكيد.

ال -فرض المعلمة مفيدة بشكل خاص في البرمجة النصية. بدون هذه المعلمة قد يتوقف البرنامج النصي الخاص بك.

بشكل افتراضي ، يعيّن هذا الأمر سياسة التنفيذ لـ الجهاز المحلي مجال. لتأكيد ذلك ، قم بتشغيل الأمر أدناه:

Get-ExecutionPolicy -List

لتعيين سياسة التنفيذ ليتم تطبيقها على نطاق آخر ، استخدم - مجال معامل.

يعين الأمر أدناه سياسة التنفيذ لـ المستخدم الحالي :

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser -Force

كما ترى من النتيجة ، المستخدم الحالي السياسة لم تعد غير معرف . هو عليه الآن تجاوز ، السياسة التي تم تعيينها باستخدام الأمر الأخير.

كيفية تعيين ExecutionPolicy مع PowerShell.exe -ExecutionPolicy

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

قبل أن أقدم أمثلة ، إليك سياسة التنفيذ الحالية:

سياسة التنفيذ الحالية هي مقيد . هذا لأن ملف معالجة النطاق له الأسبقية. للتأكيد ، انظر النتيجة أدناه:

إذا كنت تتذكر ، مقيد لن تسمح السياسة بتشغيل البرامج النصية.

هذا يعني أنه إذا حاولت تشغيل برنامج نصي ، فسيتم رفض الوصول إلي. توضح الصورة أدناه سلسلة من الأوامر ونتائجها. انظر تفسيري تحت الصورة.

الأمر الأول الذي يظهر في الصورة هو:

powershell.exe -file C:PSschedule powershell exampleCreate-folders-from-text-file.ps1

حاولت تشغيل برنامج نصي بوويرشيل. ثم تلقيت رسالة الخطأ أدناه:

لا يمكن تحميل الملف C: PS Schedule بوويرشيل example Create-folder-from-text-file.ps1 لأن البرامج النصية قيد التشغيل معطلة على هذا النظام.

والسبب هو أن سياسة التنفيذ الحالية مقيد . لا يسمح بتشغيل أي نصوص.

العودة إلى الصورة المرجعية. في السطر التالي ، قمت بتشغيل الأمر التالي:

powershell.exe -file C:PSschedule powershell exampleCreate-folders-from-text-file.ps1 -ExecutionPolicy Unrestricted

بشكل فعال ، يمكنني تعيين سياسة تنفيذ مؤقتة لسطر الأوامر باستخدام المعلمة -ExecutionPolicy من الأمرpowershell.exe. لكنني تلقيت نفس رسالة الخطأ. السبب هو أنني بحاجة إلى تعيين سياسة التنفيذ قبل استدعاء البرنامج النصي.

ثم في السطر التالي ، قمت بتنفيذ هذا الأمر:

powershell.exe -ExecutionPolicy Unrestricted

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

المأخوذة من التحليل الأخير هي: يمكنك تعيين Powershell ExecutionPolicy للجلسة الحالية باستخدام Powershell.exe -ExecutionPolicy. ولكن ، يجب عليك تشغيل الأمر أولاً قبل استدعاء البرنامج النصي الخاص بك.

لتأكيد أن Powershell.exe يعيّن فقط السياسة للجلسة الحالية ، سأقوم بتشغيل الأمر أدناه من الجلسة الحالية:

Get-ExecutionPolicy -List

النتيجه هي غير مقيد ل المستخدم الحالي مجال. إذا قمت بتسجيل الخروج من جلستي الحالية وقمت بتسجيل الدخول مرة أخرى. سيعود مرة أخرى إلى السياسة التي حددها الأمر Set-ExecutionPolicy.

استنتاج

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

أدلة أخرى مفيدة

  • مشغل PowerShell غير متساوٍ: تطبيقات ، أمثلة
  • شرح Powershell For Loop: النحو والأمثلة

مصادر ومراجع إضافية