🎯 50 PowerShell Scripts for Windows Administration
تعد إدارة البنية التحتية يدوياً في عصرنا الحالي بمثابة محاولة قيادة طائرة عملاقة يدوياً دون استخدام الطيار الآلي؛ فهي مهمة مستنزفة للوقت ومعرضة للأخطاء البشرية. هنا تبرز لغة PowerShell كالمحرك التوربيني الذي ينقل عملك من البطء اليدوي إلى السرعة البرمجية الفائقة. هذا الدليل ليس مجرد قائمة، بل هو صندوق أدوات يحتوي على 50 حلاً برمجياً تم استخلاصها بدقة لأتمتة المهام اليومية في بيئة ويندوز. سنأخذك في رحلة تبدأ من مراقبة النبض الحي للنظام، مروراً بإدارة المستخدمين والشبكات، وصولاً إلى أتمتة النسخ الاحتياطي. كل سكربت هنا هو بمثابة موظف مخلص يعمل لديك على مدار الساعة دون كلل، مما يمنحك التفرغ للتفكير في الحلول الإبداعية بدلاً من الغرق في المهام المتكررة.
1️⃣ Get System Information — استخراج معلومات الجهاز
يعمل الأمر Get-ComputerInfo مثل بطاقة الهوية الرقمية للجهاز، حيث يقدم معلومات شاملة عن المعالج والذاكرة وإصدار الويندوز لتسهيل عمليات الجرد والتوثيق الفني.
2️⃣ Check Disk Space — فحص سعة التخزين
يستخدم الأمر Get-PSDrive لاستعراض جميع محركات الأقراص مع تحويل القيم إلى جيجابايت لتسهيل القراءة، مما يساعد في اكتشاف امتلاء الأقراص قبل توقف الخدمات.
3️⃣ List Running Services — الخدمات النشطة حالياً
يستخدم Get-Service مع فلتر الحالة النشطة لتصفية الخدمات العاملة فقط، مما يسهل اكتشاف الخدمات غير الضرورية التي قد تبطئ النظام.
4️⃣ Restart a Service — إعادة تشغيل خدمة متعثرة
يستخدم الأمر Restart-Service مع قوة إجبارية وخيار إيقاف الأخطاء، وهو مفيد جداً لإصلاح أعطال الطابعات (Spooler) أو خوادم الويب (W3Svc).
5️⃣ List Installed Software — جرد البرامج المثبتة
يستخدم Get-WmiObject مع فئة Win32_Product لاستعراض جميع التطبيقات مع أسماء البائعين والإصدارات، مما يسهل اكتشاف البرامج غير المرخصة.
6️⃣ Check Windows Updates — سجل التحديثات الأمنية
يستخدم الأمر Get-WindowsUpdateLog لجلب جميع التحديثات المثبتة مع تواريخها، وهو أداة أساسية للتدقيق الأمني والتأكد من تطبيق التصحيحات الحرجة.
7️⃣ Get Top CPU Processes — أكثر العمليات استهلاكاً للمعالج
يستخدم Get-Process مع ترتيب تنازلي حسب استهلاك المعالج، ليكشف فوراً عن التطبيقات "الشرهة" التي تستهلك موارد النظام دون مبرر.
8️⃣ Kill a Process by Name — إنهاء عملية عالقة
يستخدم Stop-Process مع خيار الإجبار Force لإنهاء أي تطبيق متجمد أو غير مستجيب، مما يوفر عناء فتح مدير المهام والبحث يدوياً عن العملية.
9️⃣ Monitor CPU Usage — مراقبة المعالج حياً
يستخدم حلقة تكرار مع Get-Counter لقراءة نسبة استهلاك المعالج آنياً، ويعرض الوقت مع القيمة في سجل متجدد، مما يساعد في تشخيص مشاكل الأداء المتقطعة.
🔟 Monitor Memory Usage — مراقبة الذاكرة حياً
يقرأ Win32_OperatingSystem لحساب الذاكرة الحرة والمستخدمة والنسبة المئوية، مما يسمح بالتدخل المبكر قبل استنزاف كامل الذاكرة.
1️⃣1️⃣ Export Performance Logs — تصدير سجلات الأداء
يستخدم Get-Counter مع فاصل زمني ثانية واحدة وعدد محدد من العينات لبناء سجل أداء تفصيلي يمكن تحليله في Excel أو أي أداة أخرى.
1️⃣2️⃣ Get System Uptime — وقت تشغيل النظام
يستخدم الأمر Get-CimInstance مع فئة Win32_OperatingSystem لقراءة وقت آخر تشغيل، وهو مؤشر حاسم على استقرار الخادم وحاجته لإعادة التشغيل الوقائي.
1️⃣3️⃣ Shutdown / Restart Computer — إيقاف أو إعادة تشغيل الجهاز
يستخدم Restart-Computer مع خيار Force لإعادة التشغيل الفوري، وهو مفيد لتطبيق التحديثات الأمنية أو تغييرات السجل التي تتطلب إعادة تشغيل.
- استخراج معلومات شاملة عن الجهاز ونظام التشغيل باستخدام Get-ComputerInfo.
- مراقبة الأداء حياً للمعالج والذاكرة لاكتشاف الاختناقات قبل أن تؤثر على المستخدمين.
- إدارة العمليات والخدمات — إيقاف التطبيقات العالقة وإعادة تشغيل الخدمات المتعثرة.
- تصدير سجلات الأداء لتحليلها لاحقاً واتخاذ قرارات مدعومة بالبيانات.
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| PowerShell | قشرة الطاقة | لغة برمجة نصية وأداة إدارة من مايكروسوفت لأتمتة مهام ويندوز. |
| Get-ComputerInfo | الحصول على معلومات الجهاز | أمر يجلب كافة تفاصيل العتاد والبرمجيات لنظام التشغيل ويندوز. |
| Get-PSDrive | الحصول على محركات الأقراص | أمر يعرض معلومات عن جميع محركات الأقراص المتصلة بالنظام. |
| Get-Service | الحصول على الخدمات | أمر يسرد جميع خدمات ويندوز مع حالتها الحالية (نشطة/متوقفة). |
| Get-Process | الحصول على العمليات | أمر يعرض العمليات الجارية حالياً مع استهلاكها للموارد. |
| Get-Counter | الحصول على العداد | أمر يقرأ عدادات الأداء المختلفة مثل استهلاك المعالج والذاكرة. |
| Get-CimInstance | الحصول على مثيل CIM | أمر يستخدم نموذج المعلومات العامة لقراءة بيانات النظام المتقدمة. |
1️⃣ Add a Local User — إضافة مستخدم محلي
يستخدم الأمر New-LocalUser مع كلمة مرور يتم إدخالها بشكل آمن (مشفر) لإنشاء حسابات محلية دون الحاجة للدخول إلى واجهة إدارة المستخدمين الرسومية.
2️⃣ Delete a Local User — حذف مستخدم محلي
يستخدم Remove-LocalUser مع التحقق المسبق من وجود الحساب لتجنب الأخطاء، وهو إجراء أمني أساسي عند مغادرة أي موظف للمؤسسة.
3️⃣ Add a User to Group — إضافة مستخدم لمجموعة صلاحيات
يستخدم الأمر Add-LocalGroupMember لإضافة المستخدمين إلى مجموعات مثل Administrators، مما يمنحهم صلاحيات الوصول الكامل للنظام.
4️⃣ Export User Accounts to CSV — تصدير حسابات المستخدمين
يستخدم الأمر Get-LocalUser مع تصدير الخصائص الأساسية لملف CSV، مما يسهل تدقيق الحسابات النشطة وغير النشطة في المؤسسة.
5️⃣ Reset AD User Password — إعادة تعيين كلمة المرور في Active Directory
يستخدم الوحدة النمطية ActiveDirectory مع Set-ADAccountPassword لإعادة تعيين كلمة المرور وفك القفل عن الحسابات المقفلة بسبب محاولات الدخول الفاشلة.
6️⃣ List AD Users — قائمة مستخدمي الدليل النشط
يستخدم Get-ADUser مع جميع المرشحات لاستعراض حسابات المؤسسة، وإمكانية تصديرها مباشرة لملف CSV لأرشفة بيانات المستخدمين.
7️⃣ List Locked-Out Users — تحديد المستخدمين المقفلين
يستخدم Search-ADAccount مع خاصية LockedOut لفحص جميع المستخدمين المقفلين، مما يساعد في اكتشاف محاولات الاختراق المحتملة.
8️⃣ Unlock AD User — فك قفل حساب مستخدم
يستخدم الأمر Unlock-ADAccount مع اسم المستخدم كمعامل إلزامي، مما يسمح لفريق الدعم بفك القفل عن بعد دون الحاجة لصلاحيات كاملة.
9️⃣ Get AD Group Membership — أعضاء مجموعة الدليل النشط
يستخدم Get-ADGroupMember مع خاصية البحث المتكرر Recursive لاستعراض جميع الأعضاء داخلها وفروعها، مما يكشف عن أي صلاحيات غير مبررة.
🔟 Export AD Groups to CSV — تصدير مجموعات الدليل النشط
يستخدم Get-ADGroup لاستعراض جميع المجموعات مع أوصافها، وإصدارها لملف CSV ليكون مرجعاً للمراجعات الأمنية والتدقيق.
- إدارة الحسابات المحلية — إنشاء وحذف وإضافة لمجموعات الصلاحيات بسهولة.
- التكامل مع Active Directory لإدارة كلمات المرور وفك الأقفال عن بعد.
- التدقيق الأمني عبر استخراج الحسابات المقفلة والمجموعات والصلاحيات.
- تصدير جميع البيانات لملفات CSV للتوثيق والمراجعة الدورية.
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| Active Directory | الدليل النشط | خدمة مايكروسوفت لإدارة الهويات والصلاحيات في بيئات الدومين. |
| New-LocalUser | إنشاء مستخدم محلي | أمر PowerShell لإنشاء حسابات مستخدمين على جهاز محلي دون واجهة رسومية. |
| Remove-LocalUser | حذف مستخدم محلي | أمر يمسح حسابات المستخدمين المحليين بشكل دائم. |
| Get-ADUser | الحصول على مستخدم AD | أمر يجلب بيانات المستخدمين من قاعدة بيانات الدليل النشط. |
| Set-ADAccountPassword | تعيين كلمة مرور AD | أمر يعيد تعيين كلمة المرور لحساب في الدليل النشط. |
| Unlock-ADAccount | فك قفل حساب AD | أمر يعيد تفعيل حساب مقفل في الدليل النشط. |
| Get-ADGroupMember | أعضاء مجموعة AD | أمر يسرد جميع الأعضاء المنتمين لمجموعة معينة في الدليل النشط. |
1️⃣ Check Network Connections — فحص الاتصالات الشبكية
يستخدم الأمر Get-NetTCPConnection لعرض جميع اتصالات TCP مع تفاصيل العناوين المحلية والبعيدة والمنافذ وحالة كل اتصال، وهو أداة حيوية لتحليل الشبكة واكتشاف الاختراقات.
2️⃣ Ping Test — اختبار الاتصال بالشبكة
يستخدم الأمر Test-Connection مع خيار Quiet لإجراء اختبار ping صامت يعيد قيمة True/False، وهو مثالي لدمجه في سكربتات المراقبة الآلية.
3️⃣ Check Open Ports — فحص المنافذ المفتوحة
يستخدم Get-NetTCPConnection مع حالة Listen لرصد المنافذ المنتظرة للاتصالات، مع ربط كل منفذ بالعملية المسؤولة عنه (اسم البرنامج) لتحديد مصدره بدقة.
4️⃣ Test Remote Port — اختبار منفذ بعيد
يستخدم الأمر Test-NetConnection مع تحديد اسم المضيف ورقم المنفذ، ويعيد تفاصيل دقيقة عن إمكانية الاتصال ووقت الاستجابة.
5️⃣ Export Event Logs — تصدير سجلات الأحداث
يستخدم الأمر Get-WinEvent لاستعراض آخر الأحداث من سجل System مع تفاصيل المعرف والوقت والمستوى، مما يسرع تشخيص أعطال النظام.
6️⃣ Enable Remote Desktop — تفعيل سطح المكتب البعيد
يعدّل Set-ItemProperty مفتاح التسجيل المسؤول عن منع اتصالات RDP إلى 0 (سماح)، ثم يفعل قاعدة جدار الحماية لمجموعة Remote Desktop — كل ذلك بسطرين فقط.
7️⃣ Disable Windows Firewall — تعطيل جدار الحماية
يستخدم الأمر Set-NetFirewallProfile لتعطيل جدار الحماية للأنواع الثلاثة: Domain و Public و Private، وهو مفيد لاختبارات الشبكة لكنه خطر أمني في الإنتاج.
8️⃣ Start Remote PowerShell Session — بدء جلسة PowerShell عن بعد
يستخدم الأمر Enter-PSSession لفتح جلسة تفاعلية مع خادم بعيد، وكأنك تجلس أمامه تماماً — كل أمر تكتبه يُنفّذ على الخادم البعيد مباشرة.
9️⃣ Map Network Drive — ربط محرك أقراص شبكي
يستخدم الأمر New-PSDrive مع خاصية Persist لإنشاء محرك أقراص دائم يتصل بمجلد مشارك على الشبكة، مما يسهل الوصول للملفات المشتركة.
🔟 Disconnect Network Drive — فصل محرك أقراص شبكي
يستخدم الأمر Remove-PSDrive مع التحقق المسبق من وجود المحرك قبل فصله، وهو إجراء مهم عند إعادة تنظيم بنية مشاركات الملفات.
- تحليل اتصالات الشبكة والمنافذ المفتوحة لاكتشاف الأنشطة المشبوهة.
- اختبار الاتصال بالخوادم والمنافذ لتشخيص مشاكل الشبكة بدقة.
- إدارة جدار الحماية وسطح المكتب البعيد عن بعد بأسطر قليلة من الكود.
- ربط وفصل محركات أقراص الشبكة بشكل آلي لتجربة مستخدم سلسة.
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| Get-NetTCPConnection | الحصول على اتصالات TCP | أمر يعرض جميع اتصالات الشبكة النشطة والمنافذ المنتظرة في النظام. |
| Test-Connection | اختبار الاتصال | أمر PowerShell الموازي لأمر ping لاختبار وصول الشبكة لجهاز معين. |
| Test-NetConnection | اختبار اتصال الشبكة | أمر متقدم يختبر الاتصال بخادم ومنفذ محددين مع تفاصيل شاملة. |
| Get-WinEvent | الحصول على أحداث ويندوز | أمر يستخرج الأحداث من سجلات ويندوز المختلفة للتحليل والتدقيق. |
| RDP | سطح المكتب البعيد | بروتوكول مايكروسوفت للتحكم عن بعد في أجهزة ويندوز. |
| Enter-PSSession | بدء جلسة PowerShell | أمر يفتح جلسة تفاعلية مع خادم بعيد عبر PowerShell Remoting. |
| New-PSDrive | إنشاء محرك أقراص | أمر ينشئ محرك أقراص وهمي مرتبط بمجلد محلي أو مشاركة شبكية. |
1️⃣ Create Scheduled Task — إنشاء مهمة مجدولة
يستخدم Register-ScheduledTask مع مشغّل زمني يومي وإجراء لتشغيل PowerShell مع صلاحيات النظام SYSTEM، مما يضمن تنفيذ المهمة حتى في غياب المسؤول.
2️⃣ List All Installed Hotfixes — سجل التحديثات الأمنية العاجلة
يستخدم Get-HotFix مع Invoke-Command لجلب التحديثات من خوادم متعددة عن بعد وتصديرها لملفات منفصلة لكل خادم.
3️⃣ Install Windows Updates via PowerShell — تثبيت تحديثات الويندوز
يستخدم الوحدة النمطية PSWindowsUpdate مع خيارات القبول والتثبيت وإعادة التشغيل التلقائي، مما يؤتمت عملية التحديث بالكامل دون تدخل يدوي.
4️⃣ Get Printer Information — معلومات الطابعات
يستخدم الأمر Get-Printer لاستعراض جميع الطابعات المحلية والشبكية مع أسماء المشاركة والمنافذ، مما يساعد في اكتشاف الطابعات غير المستجيبة.
5️⃣ Restart Print Spooler — إعادة تشغيل مدير الطباعة
يستخدم الأمر Restart-Service مع اسم الخدمة Spooler، وهو الحل الأول والأكثر فعالية لغالبية مشاكل الطباعة في بيئات ويندوز.
6️⃣ Remote Computer Reboot — إعادة تشغيل خادم بعيد
يستخدم الأمر Restart-Computer مع خيارات Wait وFor لتشغيل الخادم عن بعد والانتظار حتى يعود PowerShell للاستجابة، مما يضمن معرفة وقت التعافي بالضبط.
7️⃣ Enable Windows Features — تفعيل ميزات ويندوز
يستخدم الأمر Enable-WindowsOptionalFeature مع خيار Online لتفعيل ميزات مثل .NET Framework 3.5 مباشرة عبر الإنترنت دون الحاجة لقرص التثبيت.
8️⃣ Get Installed Server Roles — أدوار الخادم المثبتة
يستخدم الأمر Get-WindowsFeature مع فلتر الحالة المثبتة لاستعراض الأدوار مثل Domain Controller أو DNS Server أو File Server.
- أتمتة المهام المتكررة عبر جدولة زمنية تعمل تلقائياً يومياً.
- إدارة تحديثات الويندوز والتصحيحات الأمنية من سطر أوامر واحد.
- التحكم في الطابعات والخدمات عن بعد دون الحاجة لزيارة الخادم فعلياً.
- تفعيل ميزات وأدوار ويندوز برمجياً لتوحيد التكوين عبر المؤسسة.
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| Register-ScheduledTask | تسجيل مهمة مجدولة | أمر ينشئ مهمة زمنية في جدول مهام ويندوز لتشغيل سكربت تلقائياً. |
| Get-HotFix | الحصول على التحديثات العاجلة | أمر يعرض التصحيحات الأمنية المثبتة على نظام ويندوز. |
| PSWindowsUpdate | وحدة تحديثات ويندوز | وحدة PowerShell لإدارة تحديثات ويندوز بالكامل من سطر الأوامر. |
| Get-Printer | الحصول على الطابعات | أمر يسرد جميع الطابعات المثبتة على النظام مع إعداداتها. |
| Restart-Service | إعادة تشغيل خدمة | أمر يوقف ويبدأ خدمة ويندوز من جديد لإصلاح الأعطال المؤقتة. |
| Enable-WindowsOptionalFeature | تفعيل ميزة ويندوز | أمر يثبت ميزات ويندوز الاختيارية مثل .NET Framework. |
| Get-WindowsFeature | الحصول على أدوار الخادم | أمر يعرض الأدوار والميزات المثبتة على خادم ويندوز Server. |
1️⃣ Backup Files to Directory — نسخ احتياطي للملفات
يجمع بين Robocopy مع خيار النسخ المتطابق /MIR في مسار وجهة يحمل تاريخ اليوم، لإنشاء نسخة احتياطية متطابقة وكاملة مع الاحتفاظ بسجل الإصدارات.
2️⃣ Compress Files to ZIP — ضغط الملفات
يستخدم مكتبة System.IO.Compression.FileSystem لإنشاء ملف ZIP مضغوط من مجلد محدد، مما يقلص حجم الملفات بنسبة تصل إلى 70%.
3️⃣ Extract ZIP File — فك ضغط ملف ZIP
يستخدم نفس المكتبة System.IO.Compression.FileSystem مع دالة ExtractToDirectory لاستخراج ملفات ZIP إلى وجهة محددة، مع الاحتفاظ بهيكل المجلدات الأصلي.
4️⃣ Copy Files Over Network — نسخ الملفات عبر الشبكة
يستخدم حلقة while مع Copy-Item لإعادة المحاولة تلقائياً عند فشل الاتصال، مع فاصل 5 ثوانٍ بين كل محاولة — مثالي للنسخ عبر شبكات غير مستقرة.
5️⃣ Sync Two Directories — مزامنة مجلدين
يستخدم Robocopy مع خيار /MIR (Mirror) لإنشاء نسخة مرآة كاملة — أي ملف يُحذف من المصدر يُحذف من الوجهة تلقائياً، مع الحفاظ على الصلاحيات والخصائص.
6️⃣ Get File Hash — التحقق من سلامة الملف
يستخدم الأمر Get-FileHash مع خوارزمية SHA256 لحساب التجزئة التشفيرية للملف، وهي بصمة رقمية فريدة — أي تغيير حتى بحرف واحد ينتج بصمة مختلفة تماماً.
7️⃣ Search Files by Extension — البحث عن الملفات بالامتداد
يستخدم Get-ChildItem مع بحث متكرر وفلتر اسم وفلتر تاريخ لاستعراض الملفات القديمة، مع عرض المساحة التي تشغلها لاتخاذ قرار الحذف أو الأرشفة.
8️⃣ Delete Old Files — التنظيف التلقائي
يستخدم نفس منطق البحث عن الملفات القديمة لكن مع الأمر Remove-Item لحذفها تلقائياً، مع إمكانية جدولته شهرياً لأتمتة التنظيف بالكامل.
9️⃣ Send Email Alert — إرسال تنبيه بريدي
يستخدم الأمر Send-MailMessage مع خادم SMTP لتوجيه إشعارات فورية للمسؤولين، وهو أداة أساسية لأنظمة المراقبة والتنبيه الآلية.
🔟 Get File Hash (Advanced) — بصمة رقمية متقدمة للملفات
يتيح Get-FileHash اختيار خوارزميات متعددة مثل SHA256 أو MD5 أو SHA1، حيث تُستخدم كل خوارزمية وفقاً لمتطلبات الأمان المختلفة.
- نسخ احتياطي مؤتمت بالكامل باستخدام Robocopy مع الاحتفاظ بسجل زمني للإصدارات.
- ضغط وفك ضغط الملفات لتوفير المساحة وتسهيل النقل عبر الشبكة.
- مزامنة المجلدات والتحقق من سلامة الملفات عبر البصمات الرقمية.
- التنظيف التلقائي للملفات القديمة وإرسال التنبيهات عند اكتمال أو فشل المهام.
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| Robocopy | نسخ الملفات القوي | أداة مايكروسوفت المتقدمة لنسخ ومزامنة الملفات مع دعم استئناف النسخ. |
| Get-FileHash | الحصول على بصمة الملف | أمر يحسب التجزئة التشفيرية للملف للتحقق من سلامته وأصالته. |
| SHA256 | خوارزمية التجزئة 256 | معيار تشفير ينتج بصمة رقمية فريدة لكل ملف لمنع التلاعب. |
| Get-ChildItem | الحصول على العناصر الفرعية | أمر يسرد الملفات والمجلدات في مسار محدد مع خيارات بحث متقدمة. |
| Send-MailMessage | إرسال رسالة بريدية | أمر يرسل رسائل بريد إلكتروني عبر خادم SMTP من PowerShell. |
| Copy-Item | نسخ العنصر | أمر أساسي لنسخ الملفات والمجلدات من مكان لآخر. |
| Remove-Item | إزالة العنصر | أمر يحذف الملفات والمجلدات بشكل دائم من النظام. |
🚀 الخاتمة
في نهاية هذا الدليل، نكون قد وضعنا بين يديك ترسانة برمجية مكونة من 50 سكربت PowerShell قادرة على تغيير طريقتك في إدارة الأنظمة للأبد. الأتمتة ليست مجرد رفاهية، بل هي ضرورة قصوى لضمان استقرار البنية التحتية وتقليل الأخطاء البشرية القاتلة. من خلال دمج هذه الأدوات في روتينك اليومي، ستنتقل من مرحلة الاستجابة للأعطال إلى مرحلة التنبؤ بها ومنعها قبل وقوعها. تذكر دائماً أن القوة الحقيقية لمدير النظام تكمن في ذكاء أدواته لا في كثرة مهامه اليدوية. ابدأ اليوم بتطبيق سكربت واحد، وستلاحظ فوراً كيف سيعود عليك ذلك بساعات من الراحة والإنتاجية العالية.
