An open API service indexing awesome lists of open source software.

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.

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`.


🔗 قم بزيارة الصفحة الرئيسية الرسمية للحصول على عرض كامل!


الترخيص
إصدار PowerShell
الحالة
نظام التشغيل
الدعم
المساهمات

---

## إجراءات النصوص البرمجية

يقوم النص البرمجي `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`.

المساهمات، سواء كانت تقارير أخطاء، أو اقتراحات تحسين، أو طلبات سحب، هي موضع ترحيب.