Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
PS2EXE — وحدة لتجميع نصوص باورشيل إلى ملفات تنفيذية | Kitploit
أدوات/GitHubGitHub/mscholtes/ps2exe
توليد الحمولةالبرمجة النصية والأتمتةالأدوات والمكونات
GitHubmscholtes/ps2exe

PS2EXE

وحدة لتجميع نصوص باورشيل إلى ملفات تنفيذية

عرض المستودع
1.8k247منذ 2 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

مستودع خالٍ من الذكاء الاصطناعي - الذكاء الاصطناعي يقتل الإبداع وطبيعتنا!

PS2EXE

إصدار محسّن من النص الرائع لـ Ingo Karstein مع دعم واجهة المستخدم الرسومية. يتم تفعيل الإخراج والإدخال الرسومي بمفتاح واحد، ويتم إنشاء ملفات تنفيذية حقيقية لنظام ويندوز. يقوم بتجميع النصوص البرمجية المتوافقة مع Powershell 5.x فقط. مع واجهة أمامية رسومية اختيارية Win-PS2EXE.

إصدار الوحدة.

يمكنك العثور على الإصدار النصي هنا (https://github.com/MScholtes/TechNet-Gallery).

المؤلف: Markus Scholtes

الإصدار: 1.0.18

التاريخ: 2026-06-06

التثبيت

root@kitploit:~
PS C:\> Install-Module ps2exe

أو التحميل من هنا: https://www.powershellgallery.com/packages/ps2exe/.

الاستخدام

root@kitploit:~
  Invoke-ps2exe .\source.ps1 .\target.exe

أو

root@kitploit:~
  ps2exe .\source.ps1 .\target.exe

يقوم بتجميع "source.ps1" في الملف التنفيذي target.exe (إذا تم حذف ".\target.exe"، يتم كتابة المخرجات إلى ".\source.exe").

أو ابدأ Win-PS2EXE لواجهة أمامية رسومية باستخدام

root@kitploit:~
  Win-PS2EXE

المعاملات

root@kitploit:~
ps2exe [-inputFile] '<file_name>' [[-outputFile] '<file_name>']
       [-prepareDebug] [-x86|-x64] [-lcid <id>] [-STA|-MTA] [-noConsole] [-conHost] [-UNICODEEncoding]
       [-credentialGUI] [-iconFile '<filename>'] [-$embedFiles <hashtable>] [-title '<title>'] [-description '<description>']
       [-company '<company>'] [-product '<product>'] [-copyright '<copyright>'] [-trademark '<trademark>']
       [-version '<version>'] [-configFile] [-noOutput] [-noError] [-noVisualStyles] [-exitOnCancel]
       [-DPIAware] [-requireAdmin] [-supportOS] [-virtualize] [-longPaths]
root@kitploit:~
      inputFile = نص Powershell الذي تريد تحويله إلى ملف تنفيذي (يجب أن يكون الملف بترميز UTF8 أو UTF16)
     outputFile = اسم أو مجلد الملف التنفيذي الهدف، الافتراضي هو inputFile بامتداد '.exe'
   prepareDebug = إنشاء معلومات مفيدة لتصحيح الأخطاء
     x86 or x64 = التجميع لبيئة تشغيل 32 بت أو 64 بت فقط
           lcid = معرف الموقع للملف التنفيذي المُجمّع. ثقافة المستخدم الحالية إذا لم يتم تحديده
     STA or MTA = وضع 'Single Thread Apartment' أو 'Multi Thread Apartment'
      noConsole = سيكون الملف التنفيذي الناتج تطبيق نماذج ويندوز بدون نافذة وحدة تحكم
        conHost = فرض البدء مع conhost كوحدة تحكم بدلاً من Windows Terminal (يعطل إعادة التوجيه)
UNICODEEncoding = تشفير المخرجات كـ UNICODE في وضع وحدة التحكم
  credentialGUI = استخدام واجهة رسومية لمطالبة بيانات الاعتماد في وضع وحدة التحكم
       iconFile = اسم ملف الأيقونة للملف التنفيذي المُجمّع
     embedFiles = الملفات المضمنة تُعطى كـ hash، سيتم استخراجها إلى مفتاح hash، يجب أن تكون أسماء الملفات المصدر فريدة
                  (مثال: -embedFiles @{'Targetfilepath'='Sourcefilepath'} )
          title = معلومات العنوان (معروضة في علامة التبويب 'تفاصيل' في مربع حوار خصائص مستكشف ويندوز)
    description = معلومات الوصف (غير معروضة، ولكن مضمنة في الملف التنفيذي)
        company = معلومات الشركة (غير معروضة، ولكن مضمنة في الملف التنفيذي)
        product = معلومات المنتج (معروضة في علامة التبويب 'تفاصيل' في مربع حوار خصائص مستكشف ويندوز)
      copyright = معلومات حقوق النشر (معروضة في علامة التبويب 'تفاصيل' في مربع حوار خصائص مستكشف ويندوز)
      trademark = معلومات العلامة التجارية (معروضة في علامة التبويب 'تفاصيل' في مربع حوار خصائص مستكشف ويندوز)
        version = معلومات الإصدار (معروضة في علامة التبويب 'تفاصيل' في مربع حوار خصائص مستكشف ويندوز)
     configFile = كتابة ملف التكوين (<outputfile>.exe.config)
       noOutput = لن يُنتج الملف التنفيذي الناتج مخرجات قياسية (يشمل قناة verbose والمعلومات)
        noError = لن يُنتج الملف التنفيذي الناتج مخرجات أخطاء (يشمل قناة التحذير والتصحيح)
 noVisualStyles = تعطيل الأنماط المرئية لتطبيق واجهة ويندوز رسومية (فقط مع -noConsole)
   exitOnCancel = يخرج البرنامج عند تحديد 'إلغاء' أو 'X' في مربع إدخال Read-Host (فقط مع -noConsole)
       DPIAware = إذا تم تفعيل تحجيم العرض، سيتم تحجيم عناصر التحكم في الواجهة الرسومية إذا أمكن (فقط مع -noConsole)
   requireAdmin = إذا كان UAC مفعّلاً، يعمل الملف التنفيذي المُجمّع فقط في سياق مرتفع (يظهر مربع حوار UAC إذا لزم الأمر)
      supportOS = استخدام وظائف أحدث إصدارات ويندوز (نفّذ [Environment]::OSVersion لرؤية الفرق)
     virtualize = تفعيل افتراضية التطبيق (فرض بيئة تشغيل x86)
      longPaths = تمكين المسارات الطويلة (> 260 حرفاً) إذا كانت مفعّلة على نظام التشغيل (يعمل فقط مع ويندوز 10)

للملف التنفيذي المُنشأ المعاملات المحجوزة التالية:

root@kitploit:~
-? [<MODIFIER>]     نص المساعدة لـ Powershell الخاص بالنص البرمجي داخل الملف التنفيذي. يمكن استخدام تركيبة المعامل الاختيارية
                    "-? -detailed" أو "-? -examples" أو "-? -full" للحصول على نص المساعدة المناسب.
-debug              يُجبر الملف التنفيذي على أن يكون في وضع التصحيح. يستدعي "System.Diagnostics.Debugger.Launch()".
-extract:<FILENAME> يستخرج النص البرمجي لـ Powershell داخل الملف التنفيذي ويحفظه كـ FILENAME.
                    لن يتم تنفيذ النص البرمجي.
-wait               في نهاية تنفيذ النص البرمجي يكتب "Hit any key to exit..." وينتظر الضغط على مفتاح.
-end                سيتم تمرير جميع الخيارات التالية إلى النص البرمجي داخل الملف التنفيذي.
                    جميع الخيارات السابقة تُستخدم من قبل الملف التنفيذي نفسه ولن يتم تمريرها إلى النص البرمجي.

ملاحظات

استخدام Powershell Core:

يمكن استخدام PS2EXE مع Powershell Core. للقيام بذلك، ما عليك سوى تثبيت الوحدة PS2EXE في Powershell Core كما هو موضح أعلاه. ولكن نظرًا لأن .Net Core لا تأتي مع مترجم، يتم استخدام مترجم .Net Framework (يتم تضمين .Net Framework و Powershell 5.1 في ويندوز).

لهذا السبب، يمكن لـ PS2EXE فقط تجميع النصوص البرمجية المتوافقة مع Powershell 5.1 وينتج ملفات ثنائية .Net 4.x، ولكن لا يزال من الممكن استخدامها مباشرة على أي نظام تشغيل ويندوز مدعوم بدون تبعيات.

تضمين الملفات في الملفات التنفيذية المُجمّعة:

باستخدام المعامل -embedFiles متبوعًا بجدول تجزئة مع مسارات للملفات، سيتم تضمين تلك الملفات في الملف التنفيذي المُجمّع. عند بدء تشغيل الملف التنفيذي، ستتم كتابة تلك الملفات على القرص إلى المسارات المحددة، مثال: -embedFiles @{'Targetfilepath1'='Sourcefilepath1';'Targetfilepath2'='Sourcefilepath2'}. يجب أن تكون أسماء الملفات المصدر فريدة. المسارات المطلقة والنسبية مسموحة. بالنسبة للمسارات الهدف، المسار النسبي الذي يبدأ بـ '.\' يُفسر على أنه نسبي للملف التنفيذي، وبدون '.\' البادئة على أنه نسبي للمسار الحالي في وقت التشغيل. يتم إنشاء الدلائل تلقائيًا عند بدء التشغيل إذا لزم الأمر. في المسار الهدف، يتم توسيع متغيرات البيئة بتدوين cmd.exe مثل %TEMP% أو %APPDATA% في وقت التشغيل. سيؤدي الفشل في إنشاء أحد الملفات المضمنة إلى إيقاف تنفيذ الملف التنفيذي المُجمّع فورًا.

قائمة cmdlets غير المنفذة:

كان لا بد من إعادة كتابة أوامر الإدخال/الإخراج الأساسية بلغة C# لـ PS2EXE. غير المنفذة هي Write-Progress في وضع وحدة التحكم (عمل كثير) و Start-Transcript/Stop-Transcript (لا توجد تطبيق مرجعي مناسب من مايكروسوفت).

تنسيق المخرجات في وضع الواجهة الرسومية:

افتراضيًا، في Powershell، يتم تنسيق مخرجات cmdlets سطرًا بسطر (كمصفوفة من السلاسل). عندما يُنتج أمرك 10 أسطر من المخرجات وتستخدم مخرجات واجهة رسومية، ستظهر 10 مربعات رسائل كل منها في انتظار تأكيد. لمنع ذلك، قم بتوجيه الأمر الخاص بك إلى cmdlet Out-String. سيؤدي هذا إلى تحويل المخرجات إلى مصفوفة سلسلة واحدة تحتوي على 10 أسطر، وسيتم عرض جميع المخرجات في مربع رسالة واحد (مثال: dir C:\ | Out-String).

ملفات التكوين:

يمكن لـ PS2EXE إنشاء ملفات تكوين باسم الملف التنفيذي المُنشأ + ".config". في معظم الحالات، هذه الملفات التكوينية ليست ضرورية، فهي بيان يخبر بإصدار .Net Framework الذي يجب استخدامه. نظرًا لأنك ستستخدم عادةً .Net Framework الحالي، حاول تشغيل ملفك التنفيذي بدون ملف التكوين.

معالجة المعاملات:

تقوم النصوص البرمجية المُجمّعة بمعالجة المعاملات بنفس الطريقة التي يفعلها النص البرمجي الأصلي. هناك قيد واحد يأتي من بيئة ويندوز: بالنسبة لجميع الملفات التنفيذية، جميع المعاملات لها النوع STRING، إذا لم يكن هناك تحويل ضمني لنوع المعامل الخاص بك، يجب عليك التحويل صراحةً في النص البرمجي الخاص بك. يمكنك حتى توجيه المحتوى إلى الملف التنفيذي بنفس القيد (جميع القيم المُوجّهة لها النوع STRING).

أمان كلمة المرور:

لا تقم بتخزين كلمات المرور أبدًا في النص البرمجي المُجمّع! يمكن للمرء ببساطة إلغاء تجميع النص البرمجي باستخدام المعامل -extract. على سبيل المثال

root@kitploit:~
Output.exe -extract:C:\Output.ps1

سوف يقوم بإلغاء تجميع النص البرمجي المخزن في Output.exe. ولاحظ: النص البرمجي (عن قصد) مخزن بنص واضح في الملف التنفيذي!

متغيرات النص البرمجي:

نظرًا لأن PS2EXE يحول نصًا برمجيًا إلى ملف تنفيذي، فإن المتغيرات المتعلقة بالنص البرمجي لم تعد متاحة. يتم تعيين المتغير $MyInvocation لقيم أخرى غير تلك الموجودة في النص البرمجي.

خاصة المتغير $PSScriptRoot فارغ - يمكنك استخدام $ScriptRoot كبديل.

يمكنك الحصول على $PSScriptRoot بشكل مستقل عن كونه مُجمّعًا/غير مُجمّع باستخدام سطر الكود التالي:

root@kitploit:~
if (!$PSScriptRoot) { $PSScriptRoot = $ScriptRoot }

نافذة في الخلفية في وضع -noConsole:

عند فتح نافذة خارجية في نص برمجي في وضع -noConsole (مثلًا لـ Get-Credential أو لأمر يحتاج إلى قذيفة cmd.exe) يتم فتح النافذة التالية في الخلفية.

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

للتحايل على ذلك، يقوم $Host.UI.RawUI.FlushInputBuffer() بفتح نافذة غير مرئية يمكن تنشيطها. الاستدعاء التالي لـ $Host.UI.RawUI.FlushInputBuffer() يغلق هذه النافذة (وهكذا).

المثال التالي لن يفتح نافذة في الخلفية بعد الآن كما ستفعل استدعاء واحد لـ "ipconfig | Out-String":

root@kitploit:~
$Host.UI.RawUI.FlushInputBuffer()
ipconfig | Out-String
$Host.UI.RawUI.FlushInputBuffer()

التغييرات:

1.0.18 - 2026-06-06

  • متغير معرف مسبقًا $ScriptRoot كبديل لـ $PSScriptRoot
  • إصدار جديد من Win-PS2EXE

1.0.17 / 2025-08-21

  • معامل جديد -embedFiles لتضمين الملفات في الملف التنفيذي المُجمّع

1.0.16 / 2025-07-20

  • معامل جديد -conHost لفرض بدء الملفات التنفيذية المُجمّعة في Conhost بدلاً من Windows Terminal

1.0.15 / 2025-01-05

  • إذا تم استخدامها فقط في Powershell Core، لا يجب تثبيت الوحدة في Powershell 5.1 أيضًا

1.0.14 / 2024-09-15

  • معامل جديد -? للملفات التنفيذية المُجمّعة لإظهار مساعدة النص البرمجي الأصلي لـ Powershell
  • في وضع الواجهة الرسومية، عناوين النوافذ هي عنوان التطبيق (عند ضبط التجميع باستخدام المعامل -title)

1.0.13 / 2023-09-26

  • الآن يتم دعم [ و ] في اسم دليل النص البرمجي
  • قد يكون الملف المصدر أكبر من 16 ميجابايت (لمن يحتاج ذلك)
  • حقل نصي إضافي جديد في Win-PS2EXE

1.0.12 / 2022-11-22

  • معامل جديد -winFormsDPIAware لدعم تحجيم WinForms في وضع noConsole (فقط ويندوز 10 أو أحدث)

1.0.11 / 2021-11-21

  • إصلاح خطأ كلمة المرور الأطول من 24 حرفًا
  • معامل جديد -DPIAware لدعم التحجيم في وضع noConsole
  • معامل جديد -exitOnCancel لإيقاف تنفيذ البرنامج عند الإلغاء في مربعات الإدخال (فقط في وضع noConsole)

1.0.10 / 2021-04-10

  • معامل outputFile يقبل الآن مجلدًا هدفًا (بدون اسم ملف)

1.0.9 / 2021-02-28

  • معامل جديد UNICODEEncoding لإخراج كـ UNICODE
  • تغيير معامل debug إلى prepareDebug
  • أخيرًا تجرأنا على استخدام المعاملات المتقدمة

1.0.8 / 2020-10-24

  • إعادة هيكلة

1.0.7 / 2020-08-21

  • إصلاح خطأ لأشرطة التقدم المتزامنة في مسار واحد

1.0.6 / 2020-08-10

  • المطالبة بالاختيار تتصرف مثل Powershell الآن (وضع وحدة التحكم فقط)
  • دعم (محدود) لـ Powershell Core (يبدأ Windows Powershell في الخلفية)
  • إصلاح معالجة قيم المعاملات السالبة
  • دعم أشرطة التقدم المتحركة (وضع noConsole فقط)

1.0.5 / 2020-07-11

  • دعم أشرطة التقدم المتداخلة (وضع noConsole فقط)

1.0.4 / 2020-04-19

  • Application.EnableVisualStyles() كإعداد افتراضي لتطبيقات الواجهة الرسومية، معامل جديد -noVisualStyles لمنع ذلك

1.0.3 / 2020-02-15

  • تحويل الملفات من UTF-16 إلى UTF-8 للسماح بـ git diff
  • تجاهل مفاتيح التحكم في طلب السلسلة الآمنة في وضع وحدة التحكم

1.0.2 / 2020-01-08

  • إضافة أمثلة إلى github

1.0.1 / 2019-12-16

  • إصلاح مشكلة "عرض النافذة غير المحدود لنوافذ الواجهة الرسومية" في ps2exe.ps1 و Win-PS2EXE

1.0.0 / 2019-11-08

  • أول إصدار مستقر من الوحدة

0.0.0 / 2019-09-15

  • تجريبي
تنزيل الأداة