أحدث PowerShell ثورة في طريقة تفاعل مستخدمي Windows مع أنظمة التشغيل الخاصة بهم، وحوّل المهام الإدارية المعقّدة إلى عمليات بسيطة ومؤتمتة12. سواء كنت مسؤول نظام أو متخصصًا في تقنية المعلومات أو مستخدم Windows عاديًا يسعى إلى رفع إنتاجيته، فإن إتقان أوامر PowerShell الأساسية يمكن أن يوفر عليك ساعات لا تُحصى ويفتح لك قدرات أتمتة قوية34.
يغطي هذا الدليل الشامل أهم أوامر PowerShell التي ينبغي لكل مستخدم Windows إتقانها، من التنقل الأساسي إلى إدارة النظام المتقدمة. وبحلول نهاية هذا البرنامج التعليمي، ستكون واثقًا من قدرتك على الاستفادة من ميزات PowerShell القوية في مهام الحوسبة اليومية.
جدول المحتويات
- ما هو PowerShell ولماذا يجب أن تهتم به؟
- البدء: فتح PowerShell
- أوامر الاستكشاف الأساسية: بوصلتك في PowerShell
- أوامر إدارة الملفات والمجلدات
- معلومات النظام وإدارة العمليات
- أوامر استكشاف أعطال الشبكة وإصلاحها
- أوامر معالجة المحتوى والبيانات
- العمل مع خطوط الأنابيب في PowerShell
- إدارة الوقت والتاريخ
- أفضل ممارسات PowerShell الأساسية
- إنشاء أول سكربت PowerShell لك
- مسار تعلّم PowerShell المتقدم
- استكشاف مشكلات PowerShell الشائعة وإصلاحها
- الخاتمة: تعزيز تجربتك مع Windows
ما هو PowerShell ولماذا يجب أن تهتم به؟
PowerShell هو غلاف قوي لسطر الأوامر وبيئة لكتابة السكربتات يأتي مثبَّتًا مسبقًا على جميع إصدارات Windows الحديثة2. وعلى عكس موجه الأوامر التقليدي، يستخدم PowerShell بنية نحوية من فعل واسم تجعل الأوامر بديهية وسهلة القراءة1. فعلى سبيل المثال، Get-Process يستعيد العمليات قيد التشغيل، في حين أن Stop-Service يوقف خدمات النظام.
أهم مزايا PowerShell مقارنةً بموجه الأوامر
يقدّم PowerShell مزايا كبيرة على واجهة سطر الأوامر التقليدية1:
- مخرجات قائمة على الكائنات: فبدلًا من النص العادي، يتعامل PowerShell مع كائنات منظَّمة تحتوي على خصائص وطرق
- قدرات متقدمة لكتابة السكربتات: أنشئ سكربتات أتمتة معقّدة بالحلقات والشروط والدوال
- قابلية التوسيع عبر الوحدات: أضف وظائف عبر مكتبات .NET وcmdlets مخصّصة
- دعم خطوط الأنابيب: اربط الأوامر ببعضها لمعالجة البيانات بكفاءة
- التوافق عبر المنصات: شغّل PowerShell على Windows وLinux وmacOS
البدء: فتح PowerShell
قبل الخوض في الأوامر، عليك أن تعرف كيف تصل إلى PowerShell25. على Windows 11، الطريقة الأسهل هي:
- اكتب “PowerShell” في شريط البحث في Windows
- انقر بزر الفأرة الأيمن على “Windows PowerShell”
- اختر “Run as administrator” للحصول على صلاحيات مرتفعة
في معظم المهام الإدارية، يضمن تشغيل PowerShell كمسؤول أن لديك الصلاحيات اللازمة لتنفيذ أوامر على مستوى النظام.
أوامر الاستكشاف الأساسية: بوصلتك في PowerShell
1. Get-Help: الدليل المدمج لديك
الـ Get-Help هو على الأرجح أهم أمر في PowerShell ستتعلمها في حياتك467. فهو يوفّر توثيقًا شاملًا لأي cmdlet أو دالة أو مفهوم داخل PowerShell.
الصيغة الأساسية:
powershellGet-Help <cmdlet-name>
أمثلة عملية:
powershell# الحصول على المساعدة الأساسية لأمر
Get-Help Get-Process
# الحصول على مساعدة مفصّلة مع أمثلة
Get-Help Get-Process -Full
# عرض الأمثلة فقط
Get-Help Get-Process -Examples
# فتح توثيق المساعدة على الإنترنت
Get-Help Get-Process -Online
نصيحة احترافية: استخدم Update-Help بشكل دوري لتضمن أن لديك أحدث توثيق للمساعدة6.
2. Get-Command: اكتشف الأوامر المتاحة
عندما لا تعرف أي أمر تستخدم، Get-Command يساعدك على العثور على cmdlet المناسب لمهمتك486.
أنماط مفيدة:
powershell# عرض جميع الأوامر المتاحة
Get-Command
# العثور على الأوامر التي تبدأ بـ "Get"
Get-Command Get-*
# العثور على الأوامر التي تحتوي على "Process"
Get-Command *Process*
# العثور على أوامر لإجراءات محددة
Get-Command Start-*
Get-Command Stop-*
هذا النهج مفيد بشكل خاص عندما تعرف الإجراء الذي تريد تنفيذه لكنك لست متأكدًا من اسم الأمر بالضبط.
3. Get-Member: افهم خصائص الكائنات
يتعامل PowerShell مع الكائنات، و Get-Member يعرض لك الخصائص والطرق المتاحة لأي كائن6.
powershell# عرض خصائص كائنات العمليات
Get-Process | Get-Member
# عرض خصائص كائنات الخدمات
Get-Service | Get-Member
أوامر إدارة الملفات والمجلدات
4. Get-ChildItem: عرض محتويات المجلد
Get-ChildItem هو مكافئ PowerShell لأمر dir لكن مع وظائف أكثر بكثير1910.
الاستخدام الشائع:
powershell# عرض محتويات المجلد الحالي
Get-ChildItem
# العرض مع الملفات المخفية
Get-ChildItem -Force
# عرض متداخل (بما في ذلك المجلدات الفرعية)
Get-ChildItem -Recurse
# التصفية حسب نوع الملف
Get-ChildItem *.txt
# البحث عن ملفات في المجلدات الفرعية
Get-ChildItem -Path C:\Users -Include *.pdf -Recurse
الأسماء المستعارة: يمكنك أيضًا استخدام ls, dir، أو gci كاختصارات10.
5. Set-Location: التنقل بين المجلدات
تنقّل في نظام الملفات بكفاءة باستخدام Set-Location10.
powershell# الانتقال إلى مجلد محدد
Set-Location C:\Users\Documents
# الانتقال إلى المجلد الأب
Set-Location ..
# العودة إلى الموقع السابق
Set-Location -
# التنقل باستخدام الأسماء المستعارة
cd C:\Windows
sl C:\Temp
6. Copy-Item: نسخ الملفات والمجلدات
الـ Copy-Item cmdlet قدرات قوية لنسخ الملفات910.
powershell# نسخ ملف واحد
Copy-Item "source.txt" "destination.txt"
# النسخ مع الحماية من الكتابة فوق الملف
Copy-Item "source.txt" "backup.txt" -Force
# نسخ مجلدات كاملة
Copy-Item "C:\Source" "C:\Backup" -Recurse
# نسخ ملفات متعددة باستخدام أحرف البدل
Copy-Item "*.log" "C:\Logs\"
7. Move-Item: نقل الملفات وإعادة تسميتها
استخدم Move-Item لـ نقل وإعادة تسمية الملفات والمجلدات1112.
powershell# نقل ملف إلى موقع آخر
Move-Item "oldfile.txt" "C:\NewLocation\"
# إعادة تسمية ملف
Move-Item "oldname.txt" "newname.txt"
# نقل جميع الملفات من نوع محدد
Get-ChildItem *.txt | Move-Item -Destination "C:\TextFiles\"
8. Remove-Item: حذف الملفات والمجلدات
احذف الملفات والمجلدات بأمان مع Remove-Item10.
powershell# حذف ملف واحد
Remove-Item "unwanted.txt"
# الحذف مع التأكيد
Remove-Item "important.txt" -Confirm
# حذف المجلدات بشكل متداخل
Remove-Item "C:\TempFolder" -Recurse -Force
# حذف الملفات المطابقة لنمط معين
Remove-Item "*.tmp"
تحذير: كن شديد الحذر مع Remove-Item، خصوصًا مع المعلّمات -Recurse و -Force ، فقد لا يمكن استعادة الملفات المحذوفة.
9. New-Item: إنشاء الملفات والمجلدات
أنشئ ملفات ومجلدات جديدة بسرعة باستخدام New-Item1013.
powershell# إنشاء مجلد جديد
New-Item -Name "NewFolder" -ItemType Directory
# إنشاء ملف جديد
New-Item -Name "newfile.txt" -ItemType File
# إنشاء ملف بمحتوى
New-Item "readme.txt" -ItemType File -Value "This is initial content"
# إنشاء مجلدات متداخلة
New-Item "C:\Projects\NewProject\Source\" -ItemType Directory -Force
معلومات النظام وإدارة العمليات
10. Get-Process: مراقبة العمليات قيد التشغيل
Get-Process يوفّر معلومات مفصّلة عن العمليات قيد التشغيل على نظامك34.
powershell# عرض جميع العمليات قيد التشغيل
Get-Process
# الحصول على عملية محددة بالاسم
Get-Process notepad
# الحصول على العمليات باستخدام أحرف البدل
Get-Process note*
# ترتيب العمليات حسب استخدام CPU
Get-Process | Sort-Object CPU -Descending
# الحصول على أعلى 10 عمليات استهلاكًا للذاكرة
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10
11. Stop-Process: إنهاء العمليات
أوقف العمليات التي لا تستجيب أو غير الضرورية مع Stop-Process4.
powershell# إيقاف عملية بالاسم
Stop-Process -Name "notepad"
# إيقاف عملية بمعرّفها
Stop-Process -Id 1234
# الإيقاف مع التأكيد
Stop-Process -Name "chrome" -Confirm
# الإيقاف القسري للعمليات العنيدة
Stop-Process -Name "application" -Force
12. Get-Service: إدارة خدمات Windows
راقب وأدر خدمات Windows التي تعمل في الخلفية41415.
powershell# عرض جميع الخدمات
Get-Service
# الحصول على الخدمات حسب الحالة
Get-Service | Where-Object Status -eq "Running"
# الحصول على خدمة محددة
Get-Service -Name "Spooler"
# الحصول على الخدمات التي تبدأ بحروف محددة
Get-Service -Name "Win*"
13. Start-Service وStop-Service: التحكم في الخدمات
ابدأ خدمات Windows وأوقفها حسب الحاجة1415.
powershell# بدء خدمة
Start-Service -Name "Spooler"
# إيقاف خدمة
Stop-Service -Name "Spooler"
# إعادة تشغيل خدمة
Restart-Service -Name "Spooler"
# بدء عدة خدمات
Get-Service -Name "BITS", "Spooler" | Start-Service
أوامر استكشاف أعطال الشبكة وإصلاحها
14. Test-NetConnection: اختبار اتصال الشبكة
Test-NetConnection هو نسخة PowerShell المحسّنة من ping مع قدرات إضافية1617.
powershell# اختبار أساسي للاتصال
Test-NetConnection google.com
# اختبار منفذ محدد
Test-NetConnection google.com -Port 80
# تتبّع المسار إلى الوجهة
Test-NetConnection google.com -TraceRoute
# اختبار عدة اتصالات
"google.com", "microsoft.com" | ForEach-Object { Test-NetConnection $_ }
15. Get-NetIPAddress: عرض إعدادات IP
تحقّق من إعدادات IP للشبكة مع Get-NetIPAddress1617.
powershell# عرض جميع عناوين IP
Get-NetIPAddress
# عرض عناوين IPv4 فقط
Get-NetIPAddress -AddressFamily IPv4
# الحصول على معلومات محوّل محدد
Get-NetIPAddress -InterfaceAlias "Ethernet"
16. Resolve-DnsName: اختبار تحليل DNS
اختبر تحليل DNS وابحث عن معلومات النطاق16.
powershell# بحث أساسي في DNS
Resolve-DnsName google.com
# البحث عن أنواع سجلات محددة
Resolve-DnsName google.com -Type MX
# استخدام خادم DNS محدد
Resolve-DnsName google.com -Server 8.8.8.8
أوامر معالجة المحتوى والبيانات
17. Get-Content: قراءة محتوى الملفات
اقرأ محتوى الملفات واعرضه مباشرةً في PowerShell1819.
powershell# عرض محتوى الملف كاملًا
Get-Content "logfile.txt"
# قراءة عدد محدد من الأسطر
Get-Content "bigfile.txt" -Head 10
# مراقبة تغييرات الملف (مثل tail -f)
Get-Content "live.log" -Wait
# قراءة الأسطر الأخيرة القليلة
Get-Content "recent.log" -Tail 20
18. Out-File: تصدير المخرجات إلى ملفات
احفظ مخرجات الأمر في ملفات لتحليلها لاحقًا619.
powershell# حفظ قائمة العمليات في ملف
Get-Process | Out-File "processes.txt"
# الإضافة إلى ملف موجود
Get-Date | Out-File "log.txt" -Append
# الحفظ بترميز محدد
Get-Service | Out-File "services.txt" -Encoding UTF8
19. Select-Object: تصفية المخرجات وتنسيقها
تحكّم في المعلومات التي تُعرض من نتائج الأوامر2021.
powershell# عرض خصائص محددة فقط
Get-Process | Select-Object Name, CPU, WorkingSet
# الحصول على النتائج الأولى القليلة
Get-ChildItem | Select-Object -First 5
# اختيار القيم الفريدة
Get-Process | Select-Object ProcessName -Unique
العمل مع خطوط الأنابيب في PowerShell
20. Where-Object: تصفية النتائج
صفِّ نتائج الأوامر بناءً على معايير محددة2021.
powershell# تصفية الخدمات قيد التشغيل
Get-Service | Where-Object Status -eq "Running"
# تصفية الملفات الكبيرة
Get-ChildItem | Where-Object Length -gt 1MB
# تصفية معقّدة بشروط متعددة
Get-Process | Where-Object {$_.CPU -gt 100 -and $_.WorkingSet -gt 50MB}
21. Sort-Object: ترتيب النتائج
نظّم المخرجات بترتيب تصاعدي أو تنازلي21.
powershell# ترتيب العمليات حسب الاسم
Get-Process | Sort-Object Name
# الترتيب حسب خصائص متعددة
Get-ChildItem | Sort-Object LastWriteTime, Name
# الترتيب بترتيب تنازلي
Get-Process | Sort-Object CPU -Descending
22. ForEach-Object: معالجة كل عنصر
نفّذ إجراءات على كل كائن داخل خط الأنابيب1921.
powershell# Process each file
Get-ChildItem *.txt | ForEach-Object {
Write-Host "Processing: $($_.Name)"
}
# Modify each object
Get-Service | ForEach-Object {
"$($_.Name): $($_.Status)"
}
إدارة الوقت والتاريخ
23. Get-Date: العمل مع التواريخ والأوقات
استرجع ونسّق معلومات التاريخ والوقت الحالية19.
powershell# الحصول على التاريخ والوقت الحاليين
Get-Date
# تنسيق التاريخ بطريقة محددة
Get-Date -Format "yyyy-MM-dd HH:mm:ss"
# الحصول على مكوّنات التاريخ
(Get-Date).DayOfWeek
(Get-Date).Year
# حساب التواريخ المستقبلية
(Get-Date).AddDays(30)
أفضل ممارسات PowerShell الأساسية
استخدام الإكمال بالمفتاح Tab
الخاصة بـPowerShell ميزة الإكمال بالمفتاح Tab تُسرّع إدخال الأوامر بشكل كبير17. اضغط Tab بعد كتابة جزء من اسم الأمر أو إحدى المعلّمات أو مسار الملف ليُكمَل تلقائيًا.
استفد من الأسماء المستعارة
يتضمّن PowerShell العديد من الأسماء المستعارة المدمجة للأوامر الشائعة5:
lsأوdirلـGet-ChildItemcdلـSet-LocationcatأوtypeلـGet-ContentrmأوdelلـRemove-Item
اختبر الأوامر بأمان
قبل تشغيل أوامر قد تكون مدمّرة، استخدم -WhatIf المعلّمة لترى ما سيحدث دون تنفيذ الأمر فعليًا12:
powershellRemove-Item *.txt -WhatIf
Stop-Service Spooler -WhatIf
تعيين سياسة التنفيذ
لأسباب أمنية، يقيّد PowerShell تنفيذ السكربتات افتراضيًا22. لتشغيل السكربتات، قد تحتاج إلى تعديل سياسة التنفيذ:
powershell# التحقق من السياسة الحالية
Get-ExecutionPolicy
# تعيين السياسة للمستخدم الحالي
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
إنشاء أول سكربت PowerShell لك
بعد أن تصبح مرتاحًا مع الأوامر الفردية، يمكنك اجمعها في سكربتات للأتمتة2223. إليك مثالًا بسيطًا:
powershell# حفظ باسم system-info.ps1
Write-Host "System Information Report" -ForegroundColor Green
Write-Host "=========================" -ForegroundColor Green
Write-Host "`nCurrent Date and Time:" -ForegroundColor Yellow
Get-Date
Write-Host "`nTop 5 Processes by CPU:" -ForegroundColor Yellow
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Write-Host "`nRunning Services Count:" -ForegroundColor Yellow
(Get-Service | Where-Object Status -eq "Running").Count
Write-Host "`nDisk Usage:" -ForegroundColor Yellow
Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}}, @{Name="FreeSpace(GB)";Expression={[math]::Round($_.FreeSpace/1GB,2)}}
مسار تعلّم PowerShell المتقدم
بعد إتقانك هذه الأوامر الأساسية، فكّر في استكشاف هذه الموضوعات المتقدمة24:
- إدارة Active Directory باستخدام cmdlets الخاصة بـ AD
- إدارة أجهزة الكمبيوتر عن بُعد باستخدام PowerShell remoting
- جدولة المهام آليًا باستخدام نصوص PowerShell
- معالجة الأخطاء وتسجيل السجلات في النصوص البرمجية
- وحدات PowerShell ودوالها لإعادة استخدام الشيفرة
استكشاف مشكلات PowerShell الشائعة وإصلاحها
أخطاء نهج التنفيذ
إذا واجهت أخطاء “execution of scripts is disabled”، فتحقق من نهج التنفيذ وعدّله22:
powershellGet-ExecutionPolicy -List
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
أخطاء رفض الإذن
تتطلب كثير من المهام الإدارية امتيازات مرتفعة. شغّل PowerShell دائمًا كمسؤول عند التعامل مع:
- خدمات النظام
- تعديلات السجل
- إعدادات الشبكة
- إدارة حسابات المستخدمين
مشكلات المسارات والمواقع
عندما لا تتمكن الأوامر من العثور على الملفات أو المجلدات، تحقق من موقعك الحالي واستخدم المسارات الكاملة:
powershellGet-Location
Set-Location C:\YourDesiredPath
الخاتمة: تعزيز تجربتك مع Windows
إتقان هذه أوامر PowerShell الأساسية يحوّلك من مستخدم Windows سلبي إلى مسؤول نظام نشط قادر على أتمتة المهام المعقدة وحل المشكلات بكفاءة13. أمر بنية الأوامر فعل-اسم تجعل تعلّم PowerShell بديهيًا، بينما تتيح قدرات خط الأنابيب القوية معالجة بيانات متقدمة وإدارة للنظام24.
ابدأ بتدريب هذه الأوامر في بيئة آمنة، وابنِ ثقتك تدريجيًا واستكشف سيناريوهات أكثر تقدمًا. تذكّر أن Get-Help متاح دائمًا لتقديم معلومات مفصلة عن أي أمر، كما أن الإكمال التلقائي بمفتاح Tab يجعل إدخال الأوامر أسرع وأكثر دقة725.
سواء كنت تدير الملفات أو تراقب أداء النظام أو تستكشف مشكلات الشبكة أو تؤتمت المهام المتكررة، فإن PowerShell يوفر الأدوات التي تحتاجها للعمل بكفاءة وفعالية أكبر مع أنظمة Windows17. إن الاستثمار في تعلّم PowerShell يعود بالنفع في صورة إنتاجية أعلى وقدرات معززة لإدارة النظام ستخدمك طوال مسيرتك في مجال الحوسبة.
