تشغيل البرامج النصية وتعيين نُهج التنفيذ في Windows PowerShell

مكتمل

قبل أن تتمكن من البدء في تعديل برامج Windows PowerShell النصية أو إنشاء البرامج النصية الخاصة بك، يجب أن تعرف كيفية تشغيل برامج Windows PowerShell النصي. قد تكون على دراية بفكرة النقر المزدوج فوق ملف قابل للتنفيذ أو تحديده ثم تحديد Enter لتشغيله، ولكن هذه العملية لا تعمل مع برامج Windows PowerShell النصية.

تتمثل إحدى المشاكل في العديد من لغات البرمجة النصية في أن تشغيل البرامج النصية عن طريق الخطأ سهل جداً. ويمكن للمستخدمين تشغيل برنامج نصي عن طريق الخطأ بالنقر نقراً مزدوجاً فوقه أو تحديده ثم تحديد Enter. فيشكل هذا الإجراء مشكلة خاصةً عندما يكون امتداد الملف مخفياً، ويتم تضمين البرامج الضارة كمرفق بريد إلكتروني. على سبيل المثال، سيتم عرض ملف مرفق باسم receipt.txt.vbs على أنه receipt.txt وسيشغله المستخدمون عن طريق الخطأ، معتقدين أنه ملف نصي بسيط. لا يمثل هذا الإعداد مصدراً للقلق لبرامج Windows PowerShell النصية بسبب الإجراءات المطلوبة لتشغيل أي برنامج نصي.

التكامل مع مستكشف الملفات

لجعل برامج Windows PowerShell النصية أكثر أماناً، يقترن امتداد ملف.ps1 بـ "المفكرة". لذلك، عند النقر نقراً مزدوجاً فوق ملف.ps1 أو تحديده ثم تحديد Enter، يتم فتحه في "المفكرة". ويعني ذلك الإعداد أنه لا يمكن خداع المستخدمين لتشغيل برنامج Windows PowerShell نصي بالنقر نقراً مزدوجاً فوقه أو تحديده ثم تحديد Enter.

عند النقر بزر الماوس الأيمن فوق برنامج Windows PowerShell النصي أو تنشيط قائمة السياق الخاصة به، سيظهر لك ثلاثة خيارات:

  • Open. سيفتح هذا الخيار البرنامج النصي في "المفكرة".
  • قم بتشغيل PowerShell. سيعمل هذا الخيار على تشغيل البرنامج النصي، ولكن لن يظل موجه Windows PowerShell مفتوحاً عند اكتمال البرنامج النصي.
  • تحرير. سيفتح هذا الخيار البرنامج النصي في Windows PowerShell ISE.

في معظم الحالات، يجب أن يظل موجه Windows PowerShell مفتوحاً عند تشغيل البرنامج النصي. للقيام بهذه المهمة، قم بتشغيل البرنامج النصي من موجه Windows PowerShell مفتوح بالفعل.

تشغيل البرامج النصية في موجه PowerShell

عند تشغيل ملف قابل للتنفيذ في موجه الأوامر، يمكنك إدخال اسمه لتشغيله في الدليل الحالي. على سبيل المثال، عندما يكون الدليل الحالي C:\app، يمكنك إدخال app.exe لتشغيل c:\app\app.exe. لا يمكنك استخدام هذه العملية لتشغيل برامج Windows PowerShell النصية، لأنها لا تبحث في الدليل الحالي.

لتشغيل برنامج Windows PowerShell نصي في موجه Windows PowerShell، يمكنك استخدام الأساليب التالية:

  • إدخال المسار الكامل إلى البرنامج النصي، على سبيل المثال، C:\Scripts\MyScript.ps1.
  • إدخال مسار نسبي إلى البرنامج النصي؛ على سبيل المثال، \Scripts\MyScript.ps1.
  • الرجوع إلى الدليل الحالي؛ على سبيل المثال، .\MyScript.ps1.

نهج تنفيذ البرنامج النصي

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

فيما يلي خيارات نهج التنفيذ:

  • Restricted. لا يُسمح بتشغيل أي برامج نصية.
  • AllSigned. يمكن تشغيل البرامج النصية فقط إذا تم توقيعها رقمياً.
  • RemoteSigned. يمكن تشغيل البرامج النصية التي تم تنزيلها فقط إذا تم توقيعها رقمياً.
  • Unrestricted. يمكن تشغيل جميع البرامج النصية، ولكن يتم عرض مطالبة التأكيد عند تشغيل البرامج النصية غير الموقعة التي تم تنزيلها.
  • Bypass. يتم تشغيل جميع البرامج النصية دون مطالبات.

إشعار

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

يمكنك تعيين نهج التنفيذ على الكمبيوتر باستخدام الأمر Set-ExecutionPolicy Cmdlet. ولكن من الصعب إدارة هذا الإعداد عبر العديد من أجهزة الكمبيوتر. عند تكوين نهج التنفيذ للعديد من أجهزة الكمبيوتر، يمكنك استخدام إعداد نهج المجموعة Computer Configuration\Policies\Administrative Templates\Windows Components\Windows PowerShell\Turn on Script Execution لتجاوز الإعداد المحلي.

يمكنك تجاوز نهج التنفيذ لمثيل Windows PowerShell فردي. يصبح هذا الإعداد مفيداً إذا كان نهج الشركة يتطلب تعيين نهج التنفيذ على Restricted، ولكن لا يزال يتعين عليك تشغيل البرامج النصية أحياناً. لتجاوز نهج التنفيذ، قم بتشغيل PowerShell.exe باستخدام المعلمة -ExecutionPolicy.

Powershell.exe -ExecutionPolicy ByPass

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