دليل الواقع لتحويل PS1 إلى EXE (7 طرق)

يمكنك استدعاء نصوص PowerShell بطرق متعددة، ولكن لديها جميعها عيبًا واحدًا، لا يمكنك تشغيلها ببساطة كبرنامج ويندوز قياسي (EXE). ربما ترغب في منع تحرير الشيفرة في نص أو ربما تجعلها أكثر سهولة لمستخدميك تشغيل النصوص. حان الوقت لتعلم كيفية تحويل ملف PS1 إلى ملف EXE.

في هذا البرنامج التعليمي، ستتعلم كيفية استخدام مُولِّدات PS1 إلى EXE، وستقارن بينها أيضًا لتتمكن من اختيار الأفضل حسب تفضيلاتك.

المتطلبات

يتم توضيح أدوات مختلفة طوال هذا البرنامج التعليمي مع تعليمات خطوة بخطوة حول كيفية تحويل ملف PS1 إلى ملف EXE. تأكد من أن لديك جميع المتطلبات أدناه لمتابعة العملية.

  • A Windows computer with an administrator privileges
  • من ويندوز 7، 8.1، و 10، يتم تضمين PowerShell بالفعل عند تثبيت نظام التشغيل. على الرغم من أن بعض النصوص يمكن تشغيلها باستخدام PowerShell 3.0، إلا أنه من الأفضل بكثير الحصول على PowerShell 5.1 أو PowerShell 7
  • يجب أن يكون سياسة تنفيذ PowerShell الخاصة بك مُعينة للسماح بتنفيذ النصوص

PS2EXE

أداة PS2EXE هي أول أداة في قائمتنا. PS2EXE هي وحدة PowerShell مفتوحة المصدر ومجانية تمامًا، وفقًا للمؤلف إنجو كارستين، “لا تحول السيناريو PowerShell إلى لغة أخرى. إنما تغلف السيناريو بمضيف PowerShell خفيف الوزن مكتوب بلغة C# وتُجمع شفرة المصدر بلغة C# التي تم إنشاؤها ديناميكيًا في الذاكرة إلى ملف EXE.”

قم بزيارة مدونة إنجو كارستين هنا للمزيد من المعلومات حول كيف بدأ PS2EXE. توقف تطوير الوحدة حوالي عام 2017، ولكن أخذ ماركوس شولتس على عاتقه تطوير PS2EXE من خلال إنشاء نسخة GUI أيضًا.

تثبيت وحدة PS2EXE

بدأت PS2EXE كسيناريو PowerShell، وعندما قام ماركوس شولتس بتولي التطوير، أصبحت وحدة متاحة. نظرًا لأن PS2EXE يستخدم الوحدة لتحويل السيناريو الخاص بك إلى تطبيق قابل للتنفيذ، ستحتاج إلى تثبيتها من PowerShell Gallery.

اتبع التعليمات أدناه لتثبيت وحدة PS2EXE.

  1. افتح نافذة PowerShell كمسؤول.

2. قم بتشغيل أمر Install-Module لتنزيل وتثبيت الوحدة من PowerShell Gallery

Install-Module ps2exe

3. اكتب Y واضغط على Enter عندما تظهر الرسالة حول مستودع غير موثوق. لا داعي للقلق. هذه الرسالة غير ضارة.

Untrusted repository
 You are installing the modules from an untrusted repository. If you trust this repository, change
 its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to
 install the modules from 'PSGallery'?
 [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): Y

تحويل ملف PS1 إلى EXE عبر سطر الأوامر

يوفر PS2EXE طريقتين لتحويل نصوص PowerShell إلى ملفات EXE؛ عبر سطر الأوامر وواجهة المستخدم الرسومية. دعنا نتناول أولاً الطريقة باستخدام سطر الأوامر.

لتحويل نص PowerShell واحد إلى ملف EXE عبر سطر الأوامر، يكفي سطر واحد يحتوي على الأمر الرئيسي لـ PS2EXE (Invoke-PS2EXE) تليه مسار النص للتحويل ومسار EXE الذي ترغب في إنشائه.


## استخدم اسم الأمر الكامل
Invoke-ps2exe .\source.ps1 .\target.exe

## استخدم الاسم المستعار
ps2exe .\source.ps1 .\target.exe

يمكنك الآن تشغيل target.exe، وسيقوم بتنفيذ الشيفرة المحددة في نص source.ps1. إذا لم تستخدم معلمة NoConsole أثناء تحويل النص، سيظهر نافذة وحدة التحكم في PowerShell عند تشغيل ملف target.exe.

إخفاء وحدة التحكم

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

Invoke-ps2exe "D:\Test\Get-LatestAppLog.ps1" "D:\Test\Get-LatestAppLog.exe" -noConsole
Converting PS1 to EXE with PS2EXE Command-Line

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

Translated Text:

تحويل ملف PS1 إلى ملف EXE باستخدام أداة PS2EXE-GUI

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

يستغرق تحويل ملف PS1 إلى ملف EXE مع النسخة الرسومية من PS2EXE بضغطات قليلة فقط. وعلى عكس سطر الأوامر، يمكنك تصفح وتحديد ملف المصدر (PS1) من خلال نافذة تعريف الملفات في مستكشف الملفات.

لتشغيل النسخة الرسومية، ستحتاج إلى وجود .NET 4.x على جهاز الكمبيوتر الخاص بك. إذا كنت تملك فقط .NET 3.5x، يمكنك تنزيل إصدار PS2EXE-GUI لـ .NET 3.5x على حدة.

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

نظام التشغيل Windows 32 بت: C:\Program Files (x86)\WindowsPowerShell\Modules\ps2exe\<version>

نظام التشغيل Windows 64 بت: C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>

داخل هذه المجلدات، ستجد ملفًا يسمى Win-PS2EXE.exe.

  1. افتح الأداة C:\Program Files\WindowsPowerShell\Modules\ps2exe\<version>\Win-PS2EXE.exe.

2. انقر على النقاط الثلاثة مباشرة إلى يمين مربع الملف المصدر لتحديد البرنامج النصي PS1 الذي ترغب في تحويله.

3. حدد القيمة لـ ملف الهدف وتأكد من تضمين .exe في امتداد الملف.

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

5. انقر تجميع لبدء عملية التحويل.

Converting PS1 to EXE with PS2EXE GUI

6. عند النقر على زر تجميع، سيفتح PS2EXE جلسة PowerShell ويقوم بالتحويل. بمجرد الانتهاء، اضغط على Enter أو أغلق نافذة الوحدة النمطية.

Successfully Converted PS1 to EXE

معلومة: قد يتم اكتشاف بعض الملفات التنفيذية التي تم تجميعها بواسطة PS2EXE كفيروس من قبل برنامج مكافحة الفيروسات الخاص بك. إذا حدث هذا، فتأكد من الإبلاغ عن هذه الإيجابيات الكاذبة لبائع برنامج مكافحة الفيروسات الخاص بك.

PS1 to EXE

PS1 to EXE هو تطبيق سطح مكتبي مجاني آخر تم تطويره بواسطة F2KO Software الذي يتيح لك تحويل PS1 إلى ملف EXE. بالمقارنة مع PS2EXE، Ps1 to Exe هو أداة واجهة المستخدم الرسومية مع محرر نص بسيط.

مثل PS2EXE، يحتوي Ps1 to Exe على الإصدارين: واجهة المستخدم وسطر الأوامر. ومع ذلك، بدلاً من وحدة التحكم PowerShell، يتطلب Ps1 to Exe منك تشغيل الأوامر داخل موجه الأوامر.

للأسف، على الرغم من أن موقع F2KO لا يزال قائمًا، يبدو أنه لا يوجد طريقة لتنزيل PS1 to EXE من هناك. لحسن الحظ، كانت هناك نسخة قابلة للتنزيل من هذه الأداة تم تداولها على الإنترنت.

دعونا نتعرف على كيفية تشغيل واستخدام PS1 to EXE لإنشاء ملف EXE من نص PowerShell.

تحويل PS1 إلى EXE باستخدام واجهة المستخدم

بعد تثبيت وتشغيل Ps1 إلى Exe، ستلاحظ أن لديه محرر نصي بسيط. داخل هذا المحرر، يمكنك بناء النصوص وحفظها والنقر على زر لتحويلها.

يدعم Ps1 إلى Exe النقاط؛ لاحظ كيف تم استدعاء ملف PS1 آخر باستخدام السطر الأمر أدناه.

## استدعاء AppLogsComplete.ps1
try { .\AppLogsComplete.ps1 } catch { exit }

لتحويل نص إلى ملف تنفيذي بصيغة EXE باستخدام Ps1 إلى Exe:

  1. افتح أداة Ps1 إلى Exe من سطح المكتب الخاص بك.

2. انقر فوق ملف —> فتح، ابحث عن النص الذي ترغب في تحويله وافتحه.

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

Configuring The EXE Output Settings

3. لإضافة النصوص التابعة، انقر على علامة التبويب تضمين ثم انقر إضافة.

4. عندما تكون راضيًا عن خيارات التحويل، انقر على زر تحويل في شريط الأدوات العلوي لتحويل النص إلى ملف تنفيذي.

Adding Dependent Scripts And Converting Script to EXE

تحويل PS1 إلى EXE باستخدام سطر الأوامر

إذا كنت تفضل استخدام سطر الأوامر، يمكنك استخدام واجهة سطر الأوامر لـ Ps1 إلى Exe المسماة ps1_to_exe.exe ولكن استخدامها قليلاً معقد.

مع Ps1 إلى Exe مفتوحة:

  1. افتح موجه الأوامر كمسؤول

2. قم بتغيير دليل العمل إلى مجلد تثبيت Ps1 إلى Exe.

x86
 cd 'C:\Program Files (x86)\Ps1 to Exe'
 x64
 cd 'C:\Program Files\Ps1 to Exe'

3. الآن قم بتشغيل ps1_to_exe لتحويل ملف PS1 إلى ملف تنفيذي.

الأمر أدناه يتضمن أيضًا سيناريو تابع في ملف EXE المترجم ويعين هدف الملف التنفيذي لنظام التشغيل Windows 64 بت.

ps1_to_exe /ps1 "D:\Test\Get-LatestAppLog4.ps1" /exe "D:\Test\Get-LatestAppLogs.exe" /include "D:\Test\AppLogsComplete.ps1" /invisible /x64

فيما يلي عرض لعملية التحويل الفعلية وتفاصيل الإخراج.

Converting Script to Executable Using Ps1 to Exe Command-Line Version

IExpress 2.0

إذا كنت لا ترغب في تنزيل أداة أخرى، فلديك حظًا لأن لديك أداة IExpress القديمة في تصرفك. IExpress هو تطبيق مدمج في نظام التشغيل Windows يُستخدم عادة لتعبئة الملفات أو إنشاء برامج التثبيت.

الأمر الجيد هو أن IExpress يمكن أيضًا تحويل ملفات PowerShell إلى ملفات EXE أثناء تجميع ملفات التبعية في ملف تنفيذي واحد!

لتحويل سكريبت PowerShell البسيط إلى ملف EXE:

  1. يجب عليك فتح IExpress كمسؤول. اضغط على مفتاح *Windows*+R* لفتح صندوق الحوار Run، اكتب iexpress ثم اضغط على المفتاح Ctrl+Shift+Enter.
Running IExpress As Administrator

2. على صفحة الترحيب لـ IExpress، حدد Create new Self-Extraction Directive File وانقر فوق Next لتكوين حزمتك. يتحكم ملف الاستخراج الذاتي (SED) Self Extraction Directive (SED) في الخيارات المستخدمة عند بناء حزمة تثبيت؛ فكر فيه كملف تكوين.

Create New Self Extraction Directive File

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

Selecting An Action To Take When Running The EXE

4. الآن قدم عنوان الحزمة وانقر فوق التالي. سيظهر عنوان الحزمة في جميع الرسائل التي سيراها المستخدم أثناء التثبيت.

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

Setting A Title For The Package

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

No Prompt

6. إذا كنت تقوم بإنشاء الحزمة لمشروع يتطلب اتفاقية ترخيص للمستخدم النهائي (EULA)، يمكنك اختيار إضافة ترخيص لعرضه عند تشغيل ملف التنفيذي. ومع ذلك، اختر الخيار عدم عرض الترخيص لهذا التوضيح وانقر على التالي.

Adding an End User License Agreement

7. الآن انقر فوق إضافة وتصفح جميع النصوص التي ترغب في تضمينها في ملف التنفيذ. تأكد من تضمين النص الرئيسي الذي تنوي استدعائه وأي نصوص تابعة وملفات أخرى يشير إليها النصوص.

Selecting Files To Include In The Package

8. في نافذة تثبيت البرنامج للتشغيل، قم بتوفير مسار المحرك powershell.exe باستخدام المعلمة File. كما تأكد من ضبط معلمة ExecutionPolicy إلى Bypass لضمان عدم منع سياسات التنفيذ المُكوَّنة مُسبقًا تنفيذ النص.

powershell.exe -ExecutionPolicy Bypass -File Get-LatestAppLog.ps1
Writing Custom Command

9. بعد ذلك، يمكنك تحديد كيفية سلوك نوافذ EXE عند التنفيذ. إذا كان من المفترض أن يعمل EXE في الخلفية، اختر مخفي وانقر على التالي. مخفي هو سلوك النافذة الأكثر شيوعًا.

Selecting EXE’s Window Behavior On Execution

10. نظرًا لأنك تقوم بتشغيل EXE في الخلفية فقط، لا داعي لتضمين رسالة إنهاء. حدد لا توجد رسالة و التالي.

Setting Up Post Installation Message

11. حدد الآن مسار EXE الذي ترغب في إنشائه. يمكنك هنا أيضًا تمكين بعض الخيارات المختلفة. بمجرد الانتهاء، انقر على التالي

  • إخفاء تقدم استخراج الملفات من المستخدم – إذا كان EXE الخاص بك يعمل في الخلفية، يجب ترك هذا الخيار معطلاً.
  • تخزين الملفات باستخدام اسم ملف طويل داخل الحزمة – لدعم أسماء الملفات الطويلة أثناء عملية الاستخراج عند تشغيل EXE. يجب ترك الخيار معطلاً إذا كنت ستشغل الحزمة على Win 95 وستستخدم ملف INF أثناء التثبيت.
Setting Up Target Path And File Name

12. إذا كنت ترغب في أن يطلب EXE إعادة تشغيل بعد اكتمال النص البرمجي، يمكنك هنا تحديد إعادة التشغيل دائمًا. بعد اختيار الخيار، انقر على التالي.

Choosing Whether To Require A Restart Or Not

13. حدد الآن حفظ ملف التوجيه للاستخراج الذاتي (SED) وانقر على التالي. حفظ ملف SED يتيح لك تعديل أي خيارات قدمتها طوال هذا المعالج في وقت لاحق. يحتوي ملف SED على إجابات لجميع القيم التي قدمتها حتى الآن.

Saving Information About The Package Configuration

14. الآن كل ما تبقى هو تجميع الحزمة. انقر فوق التالي، وسترى سجل عملية. لإكمال إنشاء الحزمة، انقر فوق إنهاء، وأنت جاهز.

يتطلب تشغيل بصلاحيات المسؤول

إذا كان لديك نص يتطلب تشغيله كمسؤول، فإن IExpress لا يتيح لك خيار ذلك، ولكن من الممكن لا يزال ذلك.

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

تذكر أنه يجب عليك تغيير WindowStyle **المعلمة على عرض النافذة الشاشة اعتمادًا على كيفية رغبتك في عرض أو إخفاء نافذة الملف التنفيذي عند تشغيله.

param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
## اختبار ما إذا كان النص يعمل كمسؤول، إذا لم يكن كذلك، قم بتشغيله مرة أخرى كمسؤول
if ((Test-Admin) -eq $false){ 
    if ($elevated) {
    } else {
        try{
            Start-Process powershell.exe -WindowStyle Hidden -Verb RunAs -ArgumentList ('-noprofile -file "{0}" -elevated' -f ($MyInvocation.MyCommand.Definition))
            ## أنماط النوافذ: عادي، مصغّر، مكبر، ومخفي

						## ------> بقية النص الخاص بك يذهب هنا <------ ##

        }
        catch{
            exit
        }
    }
    exit
}

ISE Steroids

إذا كنت تحب كتابة النصوص في بي إس القوة، فإن هذه الأداة تناسب طريقتك. ISE Steroids هو امتداد لمحرر بي إس القوة المعبأ كوحدة بي إس القوة يضيف العديد من ميزات ISE.

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

  1. بفرض أنك قد قمت بتثبيت ISE Steroids بالفعل، افتح PowerShell ISE.

2. في الوحدة المدمجة، قم بتشغيل Start-Steroids لتشغيل الامتداد وتحميل Steroids.

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

4. انقر على الأدوات —> تحويل الشفرة إلى ملف تنفيذي مثلما هو موضح في الصورة أدناه.

Compiling PS1 to EXE

5. الآن قم بتعريف جميع الخيارات التي ترغب في تطبيقها على ملف التنفيذي الناتج في النافذة الصغيرة، مثلما في الصورة أدناه. هذه الخيارات هي معلمات، نفس ما يوجد في PS2EXE، لتكوين خصائص وسلوك ملف التنفيذي الخاص بك.

Configuration For The Executable File

6. بمجرد تعيين جميع الخيارات، انقر على زر إنشاء التطبيق. ستطلب منك ISE Steroids بعد ذلك تحديد مسار الهدف. بعد ذلك، انتهيت من تحويل ملف PS1 إلى EXE.

فيجوال ستوديو كود وأدوات بويرشيل المحترفة

بالنسبة لمحررنا التالي، نقدم لك فيجوال ستوديو (VS) كود. فيجوال ستوديو كود هو البديل الموصى به من مايكروسوفت لـ PowerShell ISE وقد تم اعتماده من قبل العديد من مطوري PowerShell.

على الرغم من عدم وجود طريقة أصلية في VS Code لتحويل النصوص البرمجية في PowerShell إلى ملفات تنفيذية (EXE)، يمكنك القيام بهذا بعد برنامج PowerShell Pro Tools extension. بالإضافة إلى تحويل النصوص البرمجية إلى ملفات تنفيذية، يساعد امتداد PowerShell Pro Tools على تجميع النصوص البرمجية، ويتضمن مصمم واجهة رسومية، والمزيد.

تتطلب أدوات PowerShell Pro .NET 4.6.2 (أو الإصدارات الأحدث) Developer Pack و .NET Core 1.0 أو الإصدارات الأحدث لتجميع النصوص البرمجية.

ستستخدم النصوص البرمجية Get-LatestAppLog3.ps1 و AppLogsComplete.ps1 في هذا العرض التوضيحي.

بناءً على افتراض أن لديك برنامج VS Code وامتداد PowerShell Pro Tools مثبتين:

  1. افتح VS Code ونصًا برمجيًا في PowerShell لتحويله إلى ملف تنفيذي (EXE).

2. في الزاوية العلوية اليمنى من VS Code، انقر فوق زر Package Script as Exe كما هو موضح أدناه.

Compiling PowerShell Script To An EXE

3. عند إنشاء ملف تنفيذي (EXE) من نص لأول مرة، سيقوم برنامج PowerShell Pro Tools بإنشاء ملف package.psd1 في جذر مساحة العمل الحالية.

Showing Workspace Root and PowerShell Data File (PSD1)

4. داخل ملف package.psd1، يتم ملء مسار النص الدقيق لتحويله تلقائيًا لمفتاح Root. حدد مفتاح Output Path لتحديد مسار حفظ الملف التنفيذي (EXE)، كما هو موضح أدناه.

Setting up Root and Output Path

5. عند إنشاء ملف تنفيذي (EXE) من نص، ستلاحظ رسائل تسجيل متنوعة في اللوحة Output في أسفل الشاشة. إذا ظهرت أي أخطاء أثناء تجميع النص، ستظهر هنا.

Logs Shown In The Output Pane

تجميع نصوص أخرى في نفس الملف التنفيذي (EXE)

إذا كان لديك نصوص تعتمد على نصك الرئيسي، يمكن لامتداد PowerShell Pro Tools التعامل معها أيضًا. للقيام بذلك، يتطلب PowerShell Pro Tools منك نقط مصدر أي نص ترغب في تضمينه مع الملف التنفيذي (EXE).

النص Get-LatestAppLog3.ps1 أدناه هو النص الرئيسي للتجميع. داخله، يقوم بتشغيل النص AppLogsComplete.ps1. لضمان تضمين ملف AppLogsComplete.ps1 الذي يعتمد عليه PowerShell Pro Tools، يجب عليك نقط مصدر النص أو إدراجه في نطاق النص الحالي.

. "$PSScriptRoot\AppLogsComplete.ps1"
Using Dot-Sourcing To Call Another PS1 Inside The Main Script

بمجرد أن تقوم بتحميل أي سكريبتات معتمدة، انقر على سكريبت الحزمة كملف تنفيذي مرة أخرى لبدء تحويل سكريبتاتك إلى ملف قابل للتنفيذ.

PowerGUI

كان PowerGUI أحد محرري سكريبتات PowerShell الأصليين. على الرغم من أنه يبدو أنه تم نسيانه منذ زمن طويل، يمكنك ما زلت العثور على نسخ تتبقى على الويب. لماذا نتحدث عن محرر سكريبتات PowerShell نسيته منذ زمن طويل؟ لأن لديه محول PS1 إلى EXE مدمج!

على الرغم من أن موقع PowerGUI لم يعد موجوداً، يمكنك ما زلت العثور على نسخة على مواقع مثل Softpedia.

تجميع سكريبت PS1 إلى EXE

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

Create a New Script or Open an Existing One

بمجرد أن تكون راضيًا عن سكريبتك، انقر على قائمة الأدوات. ثم اختر تجميع السكريبت أو اضغط Ctrl+F9 على لوحة المفاتيح.

Initiate Compiling Script to EXE

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

  1. انقر على زر تصفح وابحث عن PS1 الذي تريد تحويله.

2. يدعم PowerGUI إطار الهدف من Microsoft .NET Framework 3.5 إلى .NET Framework 4.0.

3. إذا كنت ترغب فقط في تشغيل ملف EXE في الخلفية، فعليك تعطيل الخيار “عرض نافذة وحدة التحكم في PowerShell عند تنفيذ النص”،

4. يمكنك أيضًا النقر على زر “التبعيات” (أسفل اليسار) إذا كان لديك ملفات أخرى لتضمينها، عادةً ملفات نصية PowerShell أخرى يعتمد نصك عليها.

5. بمجرد أن تكون راضيًا عن التكوين، انقر فوق “موافق” لبدء تحويل ملف PS1 إلى EXE.

Configuring Compiled EXE Behavior

ملاحظة جانبية، ستلاحظ عيبًا مع PowerGUI من حيث التحكم في كيفية تشغيل EXE الذي تريده. لا يوفر PowerGUI العديد من الخيارات، مثل إضافة المعلمات.

PowerGUI أيضًا لا يوفر لك خيار تضمين معلومات مثل حقوق النشر والإصدار والوصف، على عكس مولدات ملف PS1 إلى EXE الأخرى. ولكن إذا لم يكن ذلك يزعجك كثيرًا، فإن PowerGUI هو اختيار جيد يمكنك الاحتفاظ به.

PowerShell Studio

لإتمام قائمتنا لمحولات PS1 إلى EXE، دعنا ننهي بأحد أكثر بيئات تطوير PowerShell غنى بالميزات، PowerShell Studio من شركة Sapien Technologies. بُنيت من الألف إلى الياء كبيئة تطوير PowerShell حصرية، سيكون من غير العادل أن نقتصر على استعراض قدرة PowerShell Studio فقط على تحويل PS1 إلى EXEs. ومع ذلك، لدينا مساحة محدودة فقط!

مثل PowerShell Pro Tools في Visual Studio Code، تتطلب PowerShell Studio أيضًا متطلبات صارمة لتجميع النصوص؛ مثل .NET Framework 4.8، .NET 5 لـ PowerShell 7 و التشغيل الضروري لـ Visual Studio 2015-2019

بافتراض أن لديك PowerShell Studio مثبتًا، افتح PowerShell Studio وأنشئ أو افتح نص PowerShell موجود. سيستخدم هذا البرنامج التعليمي النص Get-LatestAppLog3.ps1.

التنقل في الإعدادات

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

انقر على زر Package في الزاوية العلوية اليمنى من النافذة، واختر Settings. هذا يفتح نافذة Script Packager، حيث يمكنك تعريف كل الخيارات المتاحة لك.

Packaging Script To An Executable File

كل خيار في Script Packager يلعب دورًا مهمًا في كيفية تحويل ملف EXE الناتج. يتم توضيح هذه الخيارات في الأقسام التالية مع لقطات الشاشة.

محرك النص

تركز قسم محرك النص على المنصة المستهدفة ومحرك النص لتجميع ملف التنفيذي الخاص بك.

ابدأ بتحديد الهدف الخاص بك. يمكنك اختيار إصدار 32 بت أو 64 بت من Windows، أو يمكنك اختيار كلاهما للمرونة. سوف يقوم برنامج PowerShell Studio بإنشاء ملف تنفيذي (EXE) لكل منصة تختارها هنا.

Setting up Target Platform And PowerShell Scrip Engine

إعدادات الإخراج

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

  • ملف الإخراج – اسم الملف التنفيذي الناتج.

لا تقم بتضمين امتداد ملف (.exe) لأنه سيتم تعيينه تلقائيًا لك لهذا الحقل.

  • مجلد الإخراج – حيث سيقوم برنامج PowerShell Studio بحفظ الملف التنفيذي.
  • حل وتضمين النصوص الخارجية – تأكد من تحديد هذا الخيار إذا كان لديك نصوص تعتمد عليها في النص الرئيسي الخاص بك. إذا لم تقم بتمكين هذا، فستتم تجاهل النصوص الخارجية أثناء ترجمة ملف التنفيذي الخاص بك.

تأكد دائمًا من وجود أي نصوص تعتمد عليها في نفس المجلد الذي يحتوي على النص الرئيسي.

  • التوقيع – مكان يمكنك من خلاله البحث عن شهادة لتوقيع الملف التنفيذي مع كلمة مرور الشهادة (إذا كانت تحتوي على كلمة مرور).
Managing The Output Settings For The Executable File

ملفات الرمز

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

لإضافة ملف رمز، انقر فوق زر إضافة ملف أو ببساطة قم بسحب وإفلات ملف الرمز في قسم ملفات الرمز.

Add Icon Files

القيود

في قسم القيود، يمكنك تضمين أو استبعاد المعايير للسماح بتنفيذ ملفات EXE.

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

كما يمكنك رؤية أنك لديك السيطرة الكاملة على متى يتم تنفيذ ملف EXE الناتج.

Adding Security Via Execution Restrictions

معلومات الإصدار

عندما ينشئ PowerShell Studio ملف EXE، يحتوي هذا الملف على سمات ملف متنوعة. في قسم معلومات الإصدار، يمكنك تحديد شكل هذه السمات.

هنا يمكنك تعيين سمات مثل إصدار الملف، إصدار المنتج، حقوق النشر، وما إلى ذلك. يمكنك رؤية جميع السمات المتاحة أدناه.

Setting File Version Information

خيارات البناء

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

لنفترض أنك تريد تشغيل بعض الشفرة عقب انتهاء PowerShell Studio من إنشاء ملف EXE. للقيام بذلك، انقر فوق زر جديد (إدراج) في مربع الأوامر ما بعد البناء. كل من الأوامر ما قبل البناء وما بعد البناء يقبلان الأوامر PowerShell مباشرة.

بالإضافة إلى ذلك، يمكنك النقر فوق زر إضافة ملف (نقاط الإليبسس) واختيار تطبيق آخر أو سكريبت PowerShell للتشغيل.

Adding Pre-Build or Post-Build Custom Commands To Execute

بعد إعداد كل شيء، انقر موافق لتعبئة النص البرمجي في ملف قابل للتنفيذ. سيتم فتح موقع الملف تلقائيًا لك للتحقق من ملف التنفيذ.

مراعاة التبعيات الخارجية لنص برنامج PowerShell

A PowerShell script sometimes isn’t a self-contained unit. A script can also call other scripts. When converting to an EXE, some of the tools discussed here do not automatically find these dependent scripts and compile them.

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

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

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

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

if ($MyInvocation.MyCommand.CommandType -eq "ExternalScript")
 { $ScriptPath = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition }
 else
 { $ScriptPath = Split-Path -Parent -Path ([Environment]::GetCommandLineArgs()[0]) 
     if (!$ScriptPath){ $ScriptPath = "." } }

مقارنة الميزات

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

Features Comparison

Source:
https://adamtheautomator.com/ps1-to-exe/