{"id":30749465,"url":"https://github.com/ronandavalan/windowsorchestrator","last_synced_at":"2026-05-03T19:04:34.224Z","repository":{"id":308900116,"uuid":"1010698745","full_name":"RonanDavalan/WindowsOrchestrator","owner":"RonanDavalan","description":"Your autopilot for dedicated Windows workstations. Set it up once, and let your system manage itself reliably.","archived":false,"fork":false,"pushed_at":"2025-08-20T23:47:40.000Z","size":817,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-21T01:23:07.719Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://allsys.io/","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RonanDavalan.png","metadata":{"files":{"readme":"README-ar-SA.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-29T16:13:42.000Z","updated_at":"2025-08-20T23:47:44.000Z","dependencies_parsed_at":"2025-08-08T15:48:55.903Z","dependency_job_id":"bc85788d-5ac6-498b-bd8b-680b23d8c5b7","html_url":"https://github.com/RonanDavalan/WindowsOrchestrator","commit_stats":null,"previous_names":["ronandavalan/windowsautoconfig","ronandavalan/windowsorchestrator"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/RonanDavalan/WindowsOrchestrator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonanDavalan%2FWindowsOrchestrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonanDavalan%2FWindowsOrchestrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonanDavalan%2FWindowsOrchestrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonanDavalan%2FWindowsOrchestrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RonanDavalan","download_url":"https://codeload.github.com/RonanDavalan/WindowsOrchestrator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonanDavalan%2FWindowsOrchestrator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273561386,"owners_count":25127396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2025-09-04T06:05:03.261Z","updated_at":"2026-01-22T18:25:06.618Z","avatar_url":"https://github.com/RonanDavalan.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# منسق ويندوز\n\n[🇺🇸 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)\n\nمنسق ويندوز هو مجموعة من النصوص البرمجية التي تستخدم مهام ويندوز المجدولة لتنفيذ نصوص PowerShell (`.ps1`). يساعد معالج رسومي (`firstconfig.ps1`) المستخدم على إنشاء ملف إعدادات `config.ini`. تقوم النصوص البرمجية الرئيسية (`config_systeme.ps1`, `config_utilisateur.ps1`) بقراءة هذا الملف لتنفيذ إجراءات محددة:\n*   تعديل مفاتيح سجل ويندوز.\n*   تنفيذ أوامر النظام (`powercfg`, `shutdown`).\n*   إدارة خدمات ويندوز (تغيير نوع بدء التشغيل وإيقاف خدمة `wuauserv`).\n*   بدء أو إيقاف عمليات التطبيقات التي يحددها المستخدم.\n*   إرسال طلبات HTTP POST إلى خدمة إشعارات Gotify عبر الأمر `Invoke-RestMethod`.\n\nتكتشف النصوص البرمجية لغة نظام تشغيل المستخدم وتقوم بتحميل السلاسل النصية (للسجلات، الواجهة الرسومية، والإشعارات) من ملفات `.psd1` الموجودة في دليل `i18n`.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://wo.davalan.fr/\"\u003e\u003cstrong\u003e🔗 قم بزيارة الصفحة الرئيسية الرسمية للحصول على عرض كامل!\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/الترخيص-GPLv3-blue.svg\" alt=\"الترخيص\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/إصدار_PowerShell-5.1%2B-blue\" alt=\"إصدار PowerShell\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/الحالة-يعمل-brightgreen.svg\" alt=\"الحالة\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/نظام_التشغيل-Windows_10_|_11-informational\" alt=\"نظام التشغيل\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/الدعم-11_لغة-orange.svg\" alt=\"الدعم\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/المساهمات-مرحب_بها-brightgreen.svg\" alt=\"المساهمات\"\u003e\n\u003c/p\u003e\n\n---\n\n## إجراءات النصوص البرمجية\n\nيقوم النص البرمجي `1_install.bat` بتنفيذ `management\\install.ps1`، الذي ينشئ مهمتين مجدولتين رئيسيتين.\n*   الأولى، **`WindowsOrchestrator-SystemStartup`**، تنفذ `config_systeme.ps1` عند بدء تشغيل ويندوز.\n*   الثانية، **`WindowsOrchestrator-UserLogon`**، تنفذ `config_utilisateur.ps1` عند تسجيل دخول المستخدم.\n\nبناءً على الإعدادات في ملف `config.ini`، تنفذ النصوص البرمجية الإجراءات التالية:\n\n*   **إدارة تسجيل الدخول التلقائي:**\n    *   `إجراء النص البرمجي:` يكتب النص البرمجي القيمة `1` في مفتاح السجل `HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\AutoAdminLogon`.\n    *   `إجراء المستخدم:` لكي تعمل هذه الميزة، يجب على المستخدم أولاً تسجيل كلمة المرور في السجل. لا يدير النص البرمجي هذه المعلومة. أداة **Sysinternals AutoLogon** هي أداة خارجية يمكنها تنفيذ هذا الإجراء.\n\n*   **تعديل إعدادات الطاقة:**\n    *   ينفذ الأمرين `powercfg /change standby-timeout-ac 0` و `powercfg /change hibernate-timeout-ac 0` لتعطيل وضع السكون.\n    *   ينفذ الأمر `powercfg /change monitor-timeout-ac 0` لتعطيل إيقاف تشغيل الشاشة.\n    *   يكتب القيمة `0` في مفتاح السجل `HiberbootEnabled` لتعطيل بدء التشغيل السريع.\n\n*   **إدارة تحديثات ويندوز:**\n    *   يكتب القيمة `1` في مفاتيح السجل `NoAutoUpdate` و `NoAutoRebootWithLoggedOnUsers`.\n    *   يغير نوع بدء تشغيل خدمة ويندوز `wuauserv` إلى `Disabled` وينفذ الأمر `Stop-Service` عليها.\n\n*   **جدولة إعادة تشغيل يومية:**\n    *   ينشئ مهمة مجدولة باسم `WindowsOrchestrator-SystemScheduledReboot` تنفذ `shutdown.exe /r /f /t 60` في الوقت المحدد.\n    *   ينشئ مهمة مجدولة باسم `WindowsOrchestrator-SystemPreRebootAction` تنفذ أمرًا يحدده المستخدم قبل إعادة التشغيل.\n\n*   **تسجيل الإجراءات:**\n    *   يكتب أسطرًا مختومة بالوقت في ملفات `.txt` الموجودة في مجلد `Logs`.\n    *   تقوم دالة `Rotate-LogFile` بإعادة تسمية وأرشفة ملفات السجل الحالية. يتم تحديد عدد الملفات التي يجب الاحتفاظ بها بواسطة المفتاحين `MaxSystemLogsToKeep` و `MaxUserLogsToKeep` في `config.ini`.\n\n*   **إرسال إشعارات Gotify:**\n    *   إذا كان المفتاح `EnableGotify` مضبوطًا على `true` في `config.ini`، ترسل النصوص البرمجية طلب HTTP POST إلى عنوان URL المحدد.\n    *   يحتوي الطلب على حمولة JSON مع عنوان ورسالة. الرسالة هي قائمة بالإجراءات التي تم تنفيذها والأخطاء التي تمت مواجهتها.\n\n## المتطلبات الأساسية\n\n- **نظام التشغيل**: ويندوز 10 أو ويندوز 11. يحتوي الكود المصدري على التوجيه `#Requires -Version 5.1` لنصوص PowerShell.\n- **الصلاحيات**: يجب على المستخدم قبول طلبات رفع الامتيازات (UAC) عند تنفيذ `1_install.bat` و `2_uninstall.bat`. هذا الإجراء ضروري للسماح للنصوص البرمجية بإنشاء مهام مجدولة وتعديل مفاتيح السجل على مستوى النظام.\n- **تسجيل الدخول التلقائي (Auto-Login)**: إذا قام المستخدم بتفعيل هذا الخيار، فيجب عليه استخدام أداة خارجية مثل **Microsoft Sysinternals AutoLogon** لتسجيل كلمة المرور الخاصة به في السجل.\n\n## التثبيت والإعداد الأولي\n\nيقوم المستخدم بتنفيذ ملف **`1_install.bat`**.\n\n1.  **الإعداد (`firstconfig.ps1`)**\n    *   يتم تنفيذ النص البرمجي `management\\firstconfig.ps1` ويعرض واجهة رسومية.\n    *   إذا لم يكن ملف `config.ini` موجودًا، يتم إنشاؤه من القالب `management\\defaults\\default_config.ini`.\n    *   إذا كان موجودًا، يسأل النص البرمجي المستخدم عما إذا كان يرغب في استبداله بالقالب.\n    *   يقوم المستخدم بإدخال الإعدادات. عند النقر على \"حفظ وإغلاق\"، يكتب النص البرمجي القيم في `config.ini`.\n\n2.  **تثبيت المهام (`install.ps1`)**\n    *   بعد إغلاق المعالج، يقوم `1_install.bat` بتنفيذ `management\\install.ps1` مع طلب رفع الامتيازات.\n    *   يقوم النص البرمجي `install.ps1` بإنشاء المهمتين المجدولتين:\n        *   **`WindowsOrchestrator-SystemStartup`**: ينفذ `config_systeme.ps1` عند بدء تشغيل ويندوز باستخدام حساب `NT AUTHORITY\\SYSTEM`.\n        *   **`WindowsOrchestrator-UserLogon`**: ينفذ `config_utilisateur.ps1` عند تسجيل دخول المستخدم الذي قام بتشغيل التثبيت.\n    *   لتطبيق الإعدادات دون انتظار إعادة التشغيل، يقوم `install.ps1` بتنفيذ `config_systeme.ps1` ثم `config_utilisateur.ps1` مرة واحدة في نهاية العملية.\n\n## الاستخدام والإعداد بعد التثبيت\n\nأي تعديل على الإعدادات بعد التثبيت يتم عبر ملف `config.ini`.\n\n### 1. التعديل اليدوي لملف `config.ini`\n\n*   **إجراء المستخدم:** يفتح المستخدم ملف `config.ini` باستخدام محرر نصوص ويعدل القيم المطلوبة.\n*   **إجراء النصوص البرمجية:**\n    *   تتم قراءة التعديلات في قسم `[SystemConfig]` وتطبيقها بواسطة `config_systeme.ps1` **عند إعادة تشغيل الكمبيوتر التالية**.\n    *   تتم قراءة التعديلات في قسم `[Process]` وتطبيقها بواسطة `config_utilisateur.ps1` **عند تسجيل دخول المستخدم التالي**.\n\n### 2. استخدام المعالج الرسومي\n\n*   **إجراء المستخدم:** يقوم المستخدم بتنفيذ `1_install.bat` مرة أخرى. تفتح الواجهة الرسومية، مملوءة مسبقًا بالقيم الحالية من `config.ini`. يقوم المستخدم بتعديل الإعدادات والنقر على \"حفظ وإغلاق\".\n*   **إجراء النص البرمجي:** يكتب النص البرمجي `firstconfig.ps1` القيم الجديدة في `config.ini`.\n*   **سياق الاستخدام:** بعد إغلاق المعالج، يقترح موجه الأوامر المتابعة إلى تثبيت المهام. يمكن للمستخدم إغلاق هذه النافذة لتحديث الإعدادات فقط.\n\n## إلغاء التثبيت\n\nيقوم المستخدم بتنفيذ ملف **`2_uninstall.bat`**. يقوم هذا الأخير بتنفيذ `management\\uninstall.ps1` بعد طلب رفع الامتيازات (UAC).\n\nيقوم النص البرمجي `uninstall.ps1` بتنفيذ الإجراءات التالية:\n\n1.  **تسجيل الدخول التلقائي:** يعرض النص البرمجي مطالبة تسأل عما إذا كان يجب تعطيل تسجيل الدخول التلقائي. إذا أجاب المستخدم بـ `o` (نعم)، يكتب النص البرمجي القيمة `0` في مفتاح السجل `AutoAdminLogon`.\n2.  **استعادة بعض إعدادات النظام:**\n    *   **التحديثات:** يضبط قيمة السجل `NoAutoUpdate` على `0` ويقوم بتكوين نوع بدء تشغيل خدمة `wuauserv` على `Automatic`.\n    *   **بدء التشغيل السريع:** يضبط قيمة السجل `HiberbootEnabled` على `1`.\n    *   **OneDrive:** يحذف قيمة السجل `DisableFileSyncNGSC`.\n3.  **حذف المهام المجدولة:** يبحث النص البرمجي عن المهام `WindowsOrchestrator-SystemStartup`، `WindowsOrchestrator-UserLogon`، `WindowsOrchestrator-SystemScheduledReboot`، و `WindowsOrchestrator-SystemPreRebootAction` ويحذفها.\n\n### ملاحظة حول استعادة الإعدادات\n\n**لا يقوم نص إلغاء التثبيت باستعادة إعدادات الطاقة** التي تم تعديلها بواسطة الأمر `powercfg`.\n*   **النتيجة للمستخدم:** إذا تم تعطيل وضع السكون للجهاز أو الشاشة بواسطة النصوص البرمجية، فستبقى معطلة بعد إلغاء التثبيت.\n*   **الإجراء المطلوب من المستخدم:** لإعادة تفعيل وضع السكون، يجب على المستخدم إعادة تكوين هذه الخيارات يدويًا في \"إعدادات الطاقة والسكون\" في ويندوز.\n\nعملية إلغاء التثبيت **لا تحذف أي ملفات**. يبقى دليل المشروع ومحتوياته على القرص.\n\n## هيكل المشروع\n\n```\nWindowsOrchestrator/\n├── 1_install.bat                # ينفذ الإعداد الرسومي ثم تثبيت المهام.\n├── 2_uninstall.bat              # ينفذ نص إلغاء التثبيت.\n├── Close-App.bat                # ينفذ نص PowerShell البرمجي Close-AppByTitle.ps1.\n├── Close-AppByTitle.ps1         # نص برمجي يعثر على نافذة حسب عنوانها ويرسل إليها تسلسل مفاتيح.\n├── config.ini                   # ملف الإعدادات الذي تقرأه النصوص البرمجية الرئيسية.\n├── config_systeme.ps1           # نص برمجي لإعدادات الجهاز، يتم تنفيذه عند بدء التشغيل.\n├── config_utilisateur.ps1       # نص برمجي لإدارة العمليات، يتم تنفيذه عند تسجيل الدخول.\n├── Fix-Encoding.ps1             # أداة لتحويل ملفات النصوص البرمجية إلى ترميز UTF-8 with BOM.\n├── LaunchApp.bat                # مثال على نص دفعة (batch) لتشغيل تطبيق خارجي.\n├── List-VisibleWindows.ps1      # أداة تسرد النوافذ المرئية وعملياتها.\n├── i18n/\n│   ├── en-US/\n│   │   └── strings.psd1         # ملف السلاسل النصية للغة الإنجليزية.\n│   └── ... (لغات أخرى)\n└── management/\n    ├── firstconfig.ps1          # يعرض مساعد الإعداد الرسومي.\n    ├── install.ps1              # ينشئ المهام المجدولة وينفذ النصوص البرمجية مرة واحدة.\n    ├── uninstall.ps1            # يحذف المهام ويستعيد إعدادات النظام.\n    └── defaults/\n        └── default_config.ini   # قالب لإنشاء ملف config.ini الأولي.\n```\n\n## المبادئ التقنية\n\n*   **الأوامر الأصلية**: يستخدم المشروع حصريًا أوامر ويندوز و PowerShell الأصلية. لا يلزم تثبيت أي تبعيات خارجية.\n*   **مكتبات النظام**: تعتمد التفاعلات المتقدمة مع النظام فقط على المكتبات المدمجة في ويندوز (مثل `user32.dll`).\n\n## وصف الملفات الرئيسية\n\n### `1_install.bat`\nهذا الملف الدفعي هو نقطة الدخول لعملية التثبيت. يقوم بتنفيذ `management\\firstconfig.ps1` للإعداد، ثم ينفذ `management\\install.ps1` بصلاحيات مرتفعة.\n\n### `2_uninstall.bat`\nهذا الملف الدفعي هو نقطة الدخول لعملية إلغاء التثبيت. يقوم بتنفيذ `management\\uninstall.ps1` بصلاحيات مرتفعة.\n\n### `config.ini`\nهذا هو ملف الإعدادات المركزي. يحتوي على التعليمات (مفاتيح وقيم) التي تقرأها النصوص البرمجية `config_systeme.ps1` و `config_utilisateur.ps1` لتحديد الإجراءات التي يجب تنفيذها.\n\n### `config_systeme.ps1`\nيتم تنفيذه عند بدء تشغيل الكمبيوتر بواسطة مهمة مجدولة، يقرأ هذا النص البرمجي قسم `[SystemConfig]` من ملف `config.ini`. يطبق الإعدادات عن طريق تعديل سجل ويندوز، وتنفيذ أوامر النظام (`powercfg`)، وإدارة الخدمات (`wuauserv`).\n\n### `config_utilisateur.ps1`\nيتم تنفيذه عند تسجيل دخول المستخدم بواسطة مهمة مجدولة، يقرأ هذا النص البرمجي قسم `[Process]` من ملف `config.ini`. دوره هو إيقاف أي نسخة موجودة من العملية المستهدفة، ثم إعادة تشغيلها باستخدام الإعدادات المقدمة.\n\n### `management\\firstconfig.ps1`\nيعرض نص PowerShell هذا الواجهة الرسومية التي تسمح بقراءة وكتابة الإعدادات في ملف `config.ini`.\n\n### `management\\install.ps1`\nيحتوي هذا النص البرمجي على منطق إنشاء المهام المجدولة `WindowsOrchestrator-SystemStartup` و `WindowsOrchestrator-UserLogon`.\n\n### `management\\uninstall.ps1`\nيحتوي هذا النص البرمجي على منطق حذف المهام المجدولة واستعادة مفاتيح سجل النظام إلى قيمها الافتراضية.\n\n## الإدارة بواسطة المهام المجدولة\n\nتعتمد الأتمتة على مجدول مهام ويندوز (`taskschd.msc`). يتم إنشاء المهام التالية بواسطة النصوص البرمجية:\n\n*   **`WindowsOrchestrator-SystemStartup`**: يتم تشغيله عند بدء تشغيل الكمبيوتر وينفذ `config_systeme.ps1`.\n*   **`WindowsOrchestrator-UserLogon`**: يتم تشغيله عند تسجيل الدخول وينفذ `config_utilisateur.ps1`.\n*   **`WindowsOrchestrator-SystemScheduledReboot`**: يتم إنشاؤه بواسطة `config_systeme.ps1` إذا تم تحديد `ScheduledRebootTime` في `config.ini`.\n*   **`WindowsOrchestrator-SystemPreRebootAction`**: يتم إنشاؤه بواسطة `config_systeme.ps1` إذا تم تحديد `PreRebootActionCommand` في `config.ini`.\n\n**مهم**: حذف هذه المهام يدويًا عبر مجدول المهام يوقف الأتمتة ولكنه لا يستعيد إعدادات النظام. يجب على المستخدم استخدام `2_uninstall.bat` بشكل إلزامي لإلغاء تثبيت كامل ومتحكم فيه.\n\n## الترخيص والمساهمات\n\nيتم توزيع هذا المشروع بموجب ترخيص **GPLv3**. النص الكامل متاح في ملف `LICENSE`.\n\nالمساهمات، سواء كانت تقارير أخطاء، أو اقتراحات تحسين، أو طلبات سحب، هي موضع ترحيب.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronandavalan%2Fwindowsorchestrator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fronandavalan%2Fwindowsorchestrator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronandavalan%2Fwindowsorchestrator/lists"}