https://github.com/ronandavalan/windowsorchestrator
Your autopilot for dedicated Windows workstations. Set it up once, and let your system manage itself reliably.
https://github.com/ronandavalan/windowsorchestrator
app-launcher autologon detailed-logging digital-signage kiosk optional-notifications pc-management-system powershell pre-reboot-actions process-watchdog scheduled-daily-reboot scheduled-tasks system-configuration unattended-setup windows-11 windows-automation windows-update-control
Last synced: about 1 month ago
JSON representation
Your autopilot for dedicated Windows workstations. Set it up once, and let your system manage itself reliably.
- Host: GitHub
- URL: https://github.com/ronandavalan/windowsorchestrator
- Owner: RonanDavalan
- License: gpl-3.0
- Created: 2025-06-29T16:13:42.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-08-20T23:47:40.000Z (about 2 months ago)
- Last Synced: 2025-08-21T01:23:07.719Z (about 2 months ago)
- Topics: app-launcher, autologon, detailed-logging, digital-signage, kiosk, optional-notifications, pc-management-system, powershell, pre-reboot-actions, process-watchdog, scheduled-daily-reboot, scheduled-tasks, system-configuration, unattended-setup, windows-11, windows-automation, windows-update-control
- Language: PowerShell
- Homepage: https://allsys.io/
- Size: 798 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-ar-SA.md
- License: LICENSE
Awesome Lists containing this project
README
# منسق ويندوز
[🇺🇸 English](README.md) | [🇫🇷 Français](README-fr-FR.md) | [🇩🇪 Deutsch](README-de-DE.md) | [🇪🇸 Español](README-es-ES.md) | [🇮🇳 हिंदी](README-hi-IN.md) | [🇯🇵 日本語](README-ja-JP.md) | [🇷🇺 Русский](README-ru-RU.md) | [🇨🇳 中文](README-zh-CN.md) | [🇧🇩 বাংলা](README-bn-BD.md) | [🇮🇩 Bahasa Indonesia](README-id-ID.md)
منسق ويندوز هو مجموعة من النصوص البرمجية التي تستخدم مهام ويندوز المجدولة لتنفيذ نصوص PowerShell (`.ps1`). يساعد معالج رسومي (`firstconfig.ps1`) المستخدم على إنشاء ملف إعدادات `config.ini`. تقوم النصوص البرمجية الرئيسية (`config_systeme.ps1`, `config_utilisateur.ps1`) بقراءة هذا الملف لتنفيذ إجراءات محددة:
* تعديل مفاتيح سجل ويندوز.
* تنفيذ أوامر النظام (`powercfg`, `shutdown`).
* إدارة خدمات ويندوز (تغيير نوع بدء التشغيل وإيقاف خدمة `wuauserv`).
* بدء أو إيقاف عمليات التطبيقات التي يحددها المستخدم.
* إرسال طلبات HTTP POST إلى خدمة إشعارات Gotify عبر الأمر `Invoke-RestMethod`.تكتشف النصوص البرمجية لغة نظام تشغيل المستخدم وتقوم بتحميل السلاسل النصية (للسجلات، الواجهة الرسومية، والإشعارات) من ملفات `.psd1` الموجودة في دليل `i18n`.
🔗 قم بزيارة الصفحة الرئيسية الرسمية للحصول على عرض كامل!
![]()
![]()
![]()
![]()
![]()
![]()
---
## إجراءات النصوص البرمجية
يقوم النص البرمجي `1_install.bat` بتنفيذ `management\install.ps1`، الذي ينشئ مهمتين مجدولتين رئيسيتين.
* الأولى، **`WindowsOrchestrator-SystemStartup`**، تنفذ `config_systeme.ps1` عند بدء تشغيل ويندوز.
* الثانية، **`WindowsOrchestrator-UserLogon`**، تنفذ `config_utilisateur.ps1` عند تسجيل دخول المستخدم.بناءً على الإعدادات في ملف `config.ini`، تنفذ النصوص البرمجية الإجراءات التالية:
* **إدارة تسجيل الدخول التلقائي:**
* `إجراء النص البرمجي:` يكتب النص البرمجي القيمة `1` في مفتاح السجل `HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon`.
* `إجراء المستخدم:` لكي تعمل هذه الميزة، يجب على المستخدم أولاً تسجيل كلمة المرور في السجل. لا يدير النص البرمجي هذه المعلومة. أداة **Sysinternals AutoLogon** هي أداة خارجية يمكنها تنفيذ هذا الإجراء.* **تعديل إعدادات الطاقة:**
* ينفذ الأمرين `powercfg /change standby-timeout-ac 0` و `powercfg /change hibernate-timeout-ac 0` لتعطيل وضع السكون.
* ينفذ الأمر `powercfg /change monitor-timeout-ac 0` لتعطيل إيقاف تشغيل الشاشة.
* يكتب القيمة `0` في مفتاح السجل `HiberbootEnabled` لتعطيل بدء التشغيل السريع.* **إدارة تحديثات ويندوز:**
* يكتب القيمة `1` في مفاتيح السجل `NoAutoUpdate` و `NoAutoRebootWithLoggedOnUsers`.
* يغير نوع بدء تشغيل خدمة ويندوز `wuauserv` إلى `Disabled` وينفذ الأمر `Stop-Service` عليها.* **جدولة إعادة تشغيل يومية:**
* ينشئ مهمة مجدولة باسم `WindowsOrchestrator-SystemScheduledReboot` تنفذ `shutdown.exe /r /f /t 60` في الوقت المحدد.
* ينشئ مهمة مجدولة باسم `WindowsOrchestrator-SystemPreRebootAction` تنفذ أمرًا يحدده المستخدم قبل إعادة التشغيل.* **تسجيل الإجراءات:**
* يكتب أسطرًا مختومة بالوقت في ملفات `.txt` الموجودة في مجلد `Logs`.
* تقوم دالة `Rotate-LogFile` بإعادة تسمية وأرشفة ملفات السجل الحالية. يتم تحديد عدد الملفات التي يجب الاحتفاظ بها بواسطة المفتاحين `MaxSystemLogsToKeep` و `MaxUserLogsToKeep` في `config.ini`.* **إرسال إشعارات Gotify:**
* إذا كان المفتاح `EnableGotify` مضبوطًا على `true` في `config.ini`، ترسل النصوص البرمجية طلب HTTP POST إلى عنوان URL المحدد.
* يحتوي الطلب على حمولة JSON مع عنوان ورسالة. الرسالة هي قائمة بالإجراءات التي تم تنفيذها والأخطاء التي تمت مواجهتها.## المتطلبات الأساسية
- **نظام التشغيل**: ويندوز 10 أو ويندوز 11. يحتوي الكود المصدري على التوجيه `#Requires -Version 5.1` لنصوص PowerShell.
- **الصلاحيات**: يجب على المستخدم قبول طلبات رفع الامتيازات (UAC) عند تنفيذ `1_install.bat` و `2_uninstall.bat`. هذا الإجراء ضروري للسماح للنصوص البرمجية بإنشاء مهام مجدولة وتعديل مفاتيح السجل على مستوى النظام.
- **تسجيل الدخول التلقائي (Auto-Login)**: إذا قام المستخدم بتفعيل هذا الخيار، فيجب عليه استخدام أداة خارجية مثل **Microsoft Sysinternals AutoLogon** لتسجيل كلمة المرور الخاصة به في السجل.## التثبيت والإعداد الأولي
يقوم المستخدم بتنفيذ ملف **`1_install.bat`**.
1. **الإعداد (`firstconfig.ps1`)**
* يتم تنفيذ النص البرمجي `management\firstconfig.ps1` ويعرض واجهة رسومية.
* إذا لم يكن ملف `config.ini` موجودًا، يتم إنشاؤه من القالب `management\defaults\default_config.ini`.
* إذا كان موجودًا، يسأل النص البرمجي المستخدم عما إذا كان يرغب في استبداله بالقالب.
* يقوم المستخدم بإدخال الإعدادات. عند النقر على "حفظ وإغلاق"، يكتب النص البرمجي القيم في `config.ini`.2. **تثبيت المهام (`install.ps1`)**
* بعد إغلاق المعالج، يقوم `1_install.bat` بتنفيذ `management\install.ps1` مع طلب رفع الامتيازات.
* يقوم النص البرمجي `install.ps1` بإنشاء المهمتين المجدولتين:
* **`WindowsOrchestrator-SystemStartup`**: ينفذ `config_systeme.ps1` عند بدء تشغيل ويندوز باستخدام حساب `NT AUTHORITY\SYSTEM`.
* **`WindowsOrchestrator-UserLogon`**: ينفذ `config_utilisateur.ps1` عند تسجيل دخول المستخدم الذي قام بتشغيل التثبيت.
* لتطبيق الإعدادات دون انتظار إعادة التشغيل، يقوم `install.ps1` بتنفيذ `config_systeme.ps1` ثم `config_utilisateur.ps1` مرة واحدة في نهاية العملية.## الاستخدام والإعداد بعد التثبيت
أي تعديل على الإعدادات بعد التثبيت يتم عبر ملف `config.ini`.
### 1. التعديل اليدوي لملف `config.ini`
* **إجراء المستخدم:** يفتح المستخدم ملف `config.ini` باستخدام محرر نصوص ويعدل القيم المطلوبة.
* **إجراء النصوص البرمجية:**
* تتم قراءة التعديلات في قسم `[SystemConfig]` وتطبيقها بواسطة `config_systeme.ps1` **عند إعادة تشغيل الكمبيوتر التالية**.
* تتم قراءة التعديلات في قسم `[Process]` وتطبيقها بواسطة `config_utilisateur.ps1` **عند تسجيل دخول المستخدم التالي**.### 2. استخدام المعالج الرسومي
* **إجراء المستخدم:** يقوم المستخدم بتنفيذ `1_install.bat` مرة أخرى. تفتح الواجهة الرسومية، مملوءة مسبقًا بالقيم الحالية من `config.ini`. يقوم المستخدم بتعديل الإعدادات والنقر على "حفظ وإغلاق".
* **إجراء النص البرمجي:** يكتب النص البرمجي `firstconfig.ps1` القيم الجديدة في `config.ini`.
* **سياق الاستخدام:** بعد إغلاق المعالج، يقترح موجه الأوامر المتابعة إلى تثبيت المهام. يمكن للمستخدم إغلاق هذه النافذة لتحديث الإعدادات فقط.## إلغاء التثبيت
يقوم المستخدم بتنفيذ ملف **`2_uninstall.bat`**. يقوم هذا الأخير بتنفيذ `management\uninstall.ps1` بعد طلب رفع الامتيازات (UAC).
يقوم النص البرمجي `uninstall.ps1` بتنفيذ الإجراءات التالية:
1. **تسجيل الدخول التلقائي:** يعرض النص البرمجي مطالبة تسأل عما إذا كان يجب تعطيل تسجيل الدخول التلقائي. إذا أجاب المستخدم بـ `o` (نعم)، يكتب النص البرمجي القيمة `0` في مفتاح السجل `AutoAdminLogon`.
2. **استعادة بعض إعدادات النظام:**
* **التحديثات:** يضبط قيمة السجل `NoAutoUpdate` على `0` ويقوم بتكوين نوع بدء تشغيل خدمة `wuauserv` على `Automatic`.
* **بدء التشغيل السريع:** يضبط قيمة السجل `HiberbootEnabled` على `1`.
* **OneDrive:** يحذف قيمة السجل `DisableFileSyncNGSC`.
3. **حذف المهام المجدولة:** يبحث النص البرمجي عن المهام `WindowsOrchestrator-SystemStartup`، `WindowsOrchestrator-UserLogon`، `WindowsOrchestrator-SystemScheduledReboot`، و `WindowsOrchestrator-SystemPreRebootAction` ويحذفها.### ملاحظة حول استعادة الإعدادات
**لا يقوم نص إلغاء التثبيت باستعادة إعدادات الطاقة** التي تم تعديلها بواسطة الأمر `powercfg`.
* **النتيجة للمستخدم:** إذا تم تعطيل وضع السكون للجهاز أو الشاشة بواسطة النصوص البرمجية، فستبقى معطلة بعد إلغاء التثبيت.
* **الإجراء المطلوب من المستخدم:** لإعادة تفعيل وضع السكون، يجب على المستخدم إعادة تكوين هذه الخيارات يدويًا في "إعدادات الطاقة والسكون" في ويندوز.عملية إلغاء التثبيت **لا تحذف أي ملفات**. يبقى دليل المشروع ومحتوياته على القرص.
## هيكل المشروع
```
WindowsOrchestrator/
├── 1_install.bat # ينفذ الإعداد الرسومي ثم تثبيت المهام.
├── 2_uninstall.bat # ينفذ نص إلغاء التثبيت.
├── Close-App.bat # ينفذ نص PowerShell البرمجي Close-AppByTitle.ps1.
├── Close-AppByTitle.ps1 # نص برمجي يعثر على نافذة حسب عنوانها ويرسل إليها تسلسل مفاتيح.
├── config.ini # ملف الإعدادات الذي تقرأه النصوص البرمجية الرئيسية.
├── config_systeme.ps1 # نص برمجي لإعدادات الجهاز، يتم تنفيذه عند بدء التشغيل.
├── config_utilisateur.ps1 # نص برمجي لإدارة العمليات، يتم تنفيذه عند تسجيل الدخول.
├── Fix-Encoding.ps1 # أداة لتحويل ملفات النصوص البرمجية إلى ترميز UTF-8 with BOM.
├── LaunchApp.bat # مثال على نص دفعة (batch) لتشغيل تطبيق خارجي.
├── List-VisibleWindows.ps1 # أداة تسرد النوافذ المرئية وعملياتها.
├── i18n/
│ ├── en-US/
│ │ └── strings.psd1 # ملف السلاسل النصية للغة الإنجليزية.
│ └── ... (لغات أخرى)
└── management/
├── firstconfig.ps1 # يعرض مساعد الإعداد الرسومي.
├── install.ps1 # ينشئ المهام المجدولة وينفذ النصوص البرمجية مرة واحدة.
├── uninstall.ps1 # يحذف المهام ويستعيد إعدادات النظام.
└── defaults/
└── default_config.ini # قالب لإنشاء ملف config.ini الأولي.
```## المبادئ التقنية
* **الأوامر الأصلية**: يستخدم المشروع حصريًا أوامر ويندوز و PowerShell الأصلية. لا يلزم تثبيت أي تبعيات خارجية.
* **مكتبات النظام**: تعتمد التفاعلات المتقدمة مع النظام فقط على المكتبات المدمجة في ويندوز (مثل `user32.dll`).## وصف الملفات الرئيسية
### `1_install.bat`
هذا الملف الدفعي هو نقطة الدخول لعملية التثبيت. يقوم بتنفيذ `management\firstconfig.ps1` للإعداد، ثم ينفذ `management\install.ps1` بصلاحيات مرتفعة.### `2_uninstall.bat`
هذا الملف الدفعي هو نقطة الدخول لعملية إلغاء التثبيت. يقوم بتنفيذ `management\uninstall.ps1` بصلاحيات مرتفعة.### `config.ini`
هذا هو ملف الإعدادات المركزي. يحتوي على التعليمات (مفاتيح وقيم) التي تقرأها النصوص البرمجية `config_systeme.ps1` و `config_utilisateur.ps1` لتحديد الإجراءات التي يجب تنفيذها.### `config_systeme.ps1`
يتم تنفيذه عند بدء تشغيل الكمبيوتر بواسطة مهمة مجدولة، يقرأ هذا النص البرمجي قسم `[SystemConfig]` من ملف `config.ini`. يطبق الإعدادات عن طريق تعديل سجل ويندوز، وتنفيذ أوامر النظام (`powercfg`)، وإدارة الخدمات (`wuauserv`).### `config_utilisateur.ps1`
يتم تنفيذه عند تسجيل دخول المستخدم بواسطة مهمة مجدولة، يقرأ هذا النص البرمجي قسم `[Process]` من ملف `config.ini`. دوره هو إيقاف أي نسخة موجودة من العملية المستهدفة، ثم إعادة تشغيلها باستخدام الإعدادات المقدمة.### `management\firstconfig.ps1`
يعرض نص PowerShell هذا الواجهة الرسومية التي تسمح بقراءة وكتابة الإعدادات في ملف `config.ini`.### `management\install.ps1`
يحتوي هذا النص البرمجي على منطق إنشاء المهام المجدولة `WindowsOrchestrator-SystemStartup` و `WindowsOrchestrator-UserLogon`.### `management\uninstall.ps1`
يحتوي هذا النص البرمجي على منطق حذف المهام المجدولة واستعادة مفاتيح سجل النظام إلى قيمها الافتراضية.## الإدارة بواسطة المهام المجدولة
تعتمد الأتمتة على مجدول مهام ويندوز (`taskschd.msc`). يتم إنشاء المهام التالية بواسطة النصوص البرمجية:
* **`WindowsOrchestrator-SystemStartup`**: يتم تشغيله عند بدء تشغيل الكمبيوتر وينفذ `config_systeme.ps1`.
* **`WindowsOrchestrator-UserLogon`**: يتم تشغيله عند تسجيل الدخول وينفذ `config_utilisateur.ps1`.
* **`WindowsOrchestrator-SystemScheduledReboot`**: يتم إنشاؤه بواسطة `config_systeme.ps1` إذا تم تحديد `ScheduledRebootTime` في `config.ini`.
* **`WindowsOrchestrator-SystemPreRebootAction`**: يتم إنشاؤه بواسطة `config_systeme.ps1` إذا تم تحديد `PreRebootActionCommand` في `config.ini`.**مهم**: حذف هذه المهام يدويًا عبر مجدول المهام يوقف الأتمتة ولكنه لا يستعيد إعدادات النظام. يجب على المستخدم استخدام `2_uninstall.bat` بشكل إلزامي لإلغاء تثبيت كامل ومتحكم فيه.
## الترخيص والمساهمات
يتم توزيع هذا المشروع بموجب ترخيص **GPLv3**. النص الكامل متاح في ملف `LICENSE`.
المساهمات، سواء كانت تقارير أخطاء، أو اقتراحات تحسين، أو طلبات سحب، هي موضع ترحيب.