انتقل إلى المحتوى الرئيسي

🗃️ PowerShell والتعامل مع الملفات

  • بمفردك، على وتيرتك

🎯 الهدف التعليمي​

  • التعامل مع الملفات والمجلدات عبر PowerShell
  • أتمتة المهام البسيطة باستخدام السكربتات
  • استخدام المسارات النسبية والمطلقة
  • البحث عن الملفات والمحتوى النصي في شجرة الدليل
  • عرض وتعديل أذونات الملفات

📜 البيان​

🔧 السياق​

يعهد إليك مسؤول النظام بسلسلة من المهام لتنفيذها عبر PowerShell. يمكن أتمتة هذه المهام في سكربت صغير. يجب عليك إنشاء بيئة عمل، والتعامل مع الملفات والمجلدات، وكل ذلك باستخدام PowerShell.

📁 الخطوة 1 – إعداد بيئة​

  1. افتح PowerShell في مجلد عمل من اختيارك.
  2. أنشئ الهيكل التالي باستخدام PowerShell:
projet/
├── notes/
├── archives/
└── temp/
  1. في مجلد notes، أنشئ 3 ملفات نصية باسم cours1.txt, cours2.txt, cours3.txt. يجب أن يحتوي كل من هذه الملفات على جملة مختلفة، تتضمن كلمة مهم في أحدها. أدخل المحتوى مباشرة في الملفات باستخدام PowerShell.
  2. في مجلد temp، أنشئ ملف نصي باسم temp.txt بالمحتوى التالي:
    Ce fichier est temporaire.

الأوامر المفيدة:

  • New-Item لإنشاء الملفات والمجلدات
  • Set-Content لكتابة المحتوى في الملفات
  • Get-ChildItem لسرد الملفات والمجلدات

📂 الخطوة 2 – البحث والمسارات​

  1. ابحث عن جميع الملفات .txt في مجلد projet، حتى في المجلدات الفرعية.
  2. ابحث عن الكلمة مهم في جميع الملفات النصية.
  3. اعرض المسار المطلق لكل من الملفات .txt.

الأوامر المفيدة:

  • Get-ChildItem -Recurse لسرد الملفات بشكل متكرر
  • Select-String للبحث عن النص في الملفات
  • Resolve-Path للحصول على المسار المطلق للملفات

🔄 الخطوة 3 – الأتمتة والتغليف البسيط​

  1. اكتب سكربت PowerShell باسم gestion.ps1 يقوم بالعمليات التالية:

    • نسخ جميع الملفات من notes إلى archives

    • حذف محتوى مجلد temp إذا كان موجودًا (دون حذف temp نفسه)

    • إعادة تسمية الملفات المنسوخة في archives بإضافة _backup قبل .txt

      • مثال: cours1.txt → cours1_backup.txt

الأوامر المفيدة:

  • Test-Path للتحقق من وجود مجلد أو ملف
  • Copy-Item لنسخ الملفات
  • Remove-Item لحذف الملفات أو المجلدات
  • Rename-Item لإعادة تسمية الملفات

نفذ سكربتك عدة مرات للتحقق من أنه متكرر (لا يكسر شيئًا إذا تم تشغيله عدة مرات).

🧪 الخطوة 4 – التحقق التلقائي​

أضف إلى سكربتك أمرًا يقوم بـ:

  • عد وعرض عدد الملفات في archives
  • عرض رسالة "نجاح: تم حفظ جميع الملفات." إذا كان هذا العدد 3

🔐 الخطوة 5 – أذونات NTFS (حقوق الوصول)​

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

  2. حاول قراءة هذا الملف باستخدام Get-Content. ماذا يحدث؟

  3. أعد الأذونات بعد ذلك باستخدام PowerShell.

  4. امنح مؤقتًا لكل مجلد archives/ إذنًا للقراءة والكتابة فقط (ليس الحذف).

  5. حاول بعد ذلك حذف ملف من archives/ باستخدام Remove-Item. ماذا تلاحظ؟