أهم أوامر PowerShell لفني الدعم الفني: الدليل العملي الشامل
1. أساسيات PowerShell
ابدأ بهذه الأوامر لفهم البيئة، معرفة نسخة PowerShell، البحث عن الأوامر، وفتح المساعدة.
$PSVersionTable و Get-Host آمن
يعرضان نسخة PowerShell والبيئة الحالية. مهم عند اختلاف السلوك بين Windows PowerShell 5.1 وPowerShell 7.
عرض نسخة PowerShell بالتفصيل
$PSVersionTable
عرض معلومات الجلسة الحالية
Get-Host
Get-Command و Get-Help آمن
البحث عن الأوامر وقراءة المساعدة الرسمية مباشرة من PowerShell.
البحث عن أمر يحتوي كلمة Service
Get-Command *Service*
قراءة المساعدة المختصرة لأمر
Get-Help Get-Service
فتح المساعدة مع أمثلة
Get-Help Get-Service -Examples
تحديث ملفات المساعدة، يحتاج إنترنت وقد يحتاج Admin
Update-Help
التنقل السريع آمن
أوامر أساسية للتنقل داخل المجلدات وتنظيف الشاشة ومعرفة المسار الحالي.
عرض المسار الحالي
Get-Location
الانتقال لمجلد
Set-Location C:\Windows\System32
اختصار الانتقال لمجلد
cd C:\Windows\System32
مسح الشاشة
Clear-Host
2. معلومات النظام والهاردوير
هذه الأوامر تعطيك صورة دقيقة عن الجهاز ونظام التشغيل، وهي بديل حديث لكثير من استخدامات WMIC.
Get-ComputerInfo آمن
يعرض معلومات شاملة عن Windows والجهاز. ممتاز للتوثيق الأولي في تذكرة الدعم.
عرض معلومات الجهاز كاملة
Get-ComputerInfo
عرض معلومات مختصرة عن النظام
Get-ComputerInfo | Select-Object CsName, WindowsProductName, WindowsVersion, OsArchitecture
حفظ تقرير نصي
Get-ComputerInfo | Out-File C:\Temp\computerinfo.txt
Get-CimInstance آمن
البديل الأحدث والأفضل لكثير من أوامر WMIC. يعطي معلومات دقيقة من WMI/CIM.
معلومات نظام التشغيل
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, LastBootUpTime
موديل الجهاز والشركة المصنعة
Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, Model, TotalPhysicalMemory
Serial Number من BIOS
Get-CimInstance Win32_BIOS | Select-Object SerialNumber
معلومات المعالج
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, MaxClockSpeed
معلومات شرائح RAM
Get-CimInstance Win32_PhysicalMemory | Select-Object Manufacturer, Capacity, Speed
3. استكشاف أخطاء الشبكة
PowerShell يعطيك أوامر شبكة أقوى من ping التقليدي، خصوصاً عند اختبار المنافذ وDNS وإعدادات كرت الشبكة.
Get-NetIPConfiguration و Get-NetAdapter آمن للعرض
عرض إعدادات الشبكة وكروت الشبكة بشكل منظم.
عرض إعدادات IP الأساسية
Get-NetIPConfiguration
عرض كل كروت الشبكة وحالتها
Get-NetAdapter
عرض DNS Servers لكل Interface
Get-DnsClientServerAddress
Test-NetConnection آمن
بديل قوي لـ ping وtelnet، ويفيد جداً في اختبار المنافذ مثل 443 أو 3389.
اختبار الاتصال بـ IP
Test-NetConnection 8.8.8.8
اختبار اتصال HTTPS على منفذ 443
Test-NetConnection computargi.com -Port 443
اختبار RDP على منفذ 3389
Test-NetConnection 192.168.1.50 -Port 3389
تتبع المسار
Test-NetConnection computargi.com -TraceRoute
Resolve-DnsName و DNS Cache آمن غالباً
تشخيص DNS من PowerShell وعرض أو مسح DNS Cache.
حل اسم نطاق
Resolve-DnsName computargi.com
حل اسم نطاق باستخدام DNS مخصص
Resolve-DnsName computargi.com -Server 8.8.8.8
عرض DNS Cache
Get-DnsClientCache
مسح DNS Cache
Clear-DnsClientCache
4. العمليات والخدمات
Get-Process و Stop-Process العرض آمن الإيقاف قد يحتاج Admin
عرض العمليات وإنهاء العمليات المتجمدة. استخدم Stop-Process بحذر لأنه قد يغلق عمل المستخدم غير المحفوظ.
عرض العمليات
Get-Process
البحث عن عملية بالاسم
Get-Process -Name chrome
ترتيب العمليات حسب استهلاك الذاكرة
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10
إنهاء عملية بالـ PID
Stop-Process -Id 1234 -Force
Get-Service و Restart-Service العرض آمن التعديل يحتاج Admin
إدارة خدمات Windows: عرض، تشغيل، إيقاف، إعادة تشغيل، وتغيير Startup Type.
عرض الخدمات
Get-Service
عرض الخدمات الجارية فقط
Get-Service | Where-Object Status -eq "Running"
عرض خدمة Windows Update
Get-Service -Name wuauserv
إعادة تشغيل خدمة Print Spooler
Restart-Service -Name Spooler
تعطيل خدمة، استخدمه بحذر
Set-Service -Name wuauserv -StartupType Disabled
5. المستخدمون والمجموعات المحلية
Get-LocalUser و New-LocalUser Admin للتعديل
عرض وإدارة حسابات المستخدمين المحليين.
عرض المستخدمين المحليين
Get-LocalUser
عرض مستخدم محدد
Get-LocalUser -Name Administrator
إنشاء مستخدم محلي مع إدخال كلمة المرور بشكل آمن
New-LocalUser -Name "supportUser" -Password (Read-Host -AsSecureString "Password")
تعطيل مستخدم
Disable-LocalUser -Name "supportUser"
Local Groups Admin للتعديل
عرض وإدارة عضويات المجموعات المحلية مثل Administrators.
عرض المجموعات المحلية
Get-LocalGroup
عرض أعضاء Administrators
Get-LocalGroupMember -Group "Administrators"
إضافة مستخدم إلى Administrators
Add-LocalGroupMember -Group "Administrators" -Member "supportUser"
إزالة مستخدم من Administrators
Remove-LocalGroupMember -Group "Administrators" -Member "supportUser"
6. الملفات والبحث
Get-ChildItem و Select-String آمن للعرض
استعراض الملفات والبحث داخل الملفات النصية. Get-ChildItem هو النسخة الأقوى من dir.
عرض محتويات مجلد
Get-ChildItem C:\Temp
عرض الملفات المخفية أيضاً
Get-ChildItem C:\Temp -Force
البحث عن ملفات log داخل مجلدات فرعية
Get-ChildItem C:\Temp -Recurse -Filter *.log
البحث داخل الملفات عن كلمة Error
Select-String -Path C:\Temp\*.log -Pattern "Error"
Copy-Item و Remove-Item النسخ آمن الحذف خطر
نسخ ونقل وحذف الملفات. استخدم Remove-Item بحذر شديد، خصوصاً مع -Recurse و -Force.
نسخ ملف
Copy-Item C:\Temp\report.txt D:\Backup\report.txt
نسخ مجلد كامل
Copy-Item C:\Source D:\Backup -Recurse
نقل ملف
Move-Item C:\Temp\report.txt D:\Backup\report.txt
حذف ملف محدد
Remove-Item C:\Temp\old.log
اختبار وجود ملف أو مسار
Test-Path C:\Temp\report.txt
7. الأقراص والتخزين
Get-Volume و Get-Disk آمن للعرض
عرض حالة الأقراص والأحجام والمساحات الحرة.
عرض وحدات التخزين والمساحة الحرة
Get-Volume
عرض الأقراص الفيزيائية
Get-Disk
عرض الأقسام
Get-Partition
عرض صحة الأقراص Storage Spaces إن وجدت
Get-PhysicalDisk
Repair-Volume يحتاج Admin بحذر
فحص وإصلاح أخطاء نظام الملفات. قد يشبه chkdsk في بعض السيناريوهات.
فحص سريع لوحدة C:
Repair-Volume -DriveLetter C -Scan
إصلاح Online إن أمكن
Repair-Volume -DriveLetter C -SpotFix
8. سجلات الأحداث Event Logs
Get-WinEvent آمن للعرض
أقوى طريقة لقراءة Event Logs من PowerShell، مع فلترة دقيقة حسب LogName وLevel وProvider ووقت الحدث.
عرض آخر 20 حدث من System
Get-WinEvent -LogName System -MaxEvents 20
عرض آخر 20 خطأ فقط من System
Get-WinEvent -FilterHashtable @{LogName="System"; Level=2} -MaxEvents 20أحداث آخر 24 ساعة
Get-WinEvent -FilterHashtable @{LogName="System"; StartTime=(Get-Date).AddDays(-1)}تصدير الأخطاء إلى CSV
Get-WinEvent -FilterHashtable @{LogName="System"; Level=2} -MaxEvents 100 | Export-Csv C:\Temp\system_errors.csv -NoTypeInformation9. البرامج والتحديثات
Get-HotFix آمن
يعرض تحديثات Windows المثبتة، مفيد لمعرفة آخر KB أو التحقق من تحديث معين.
عرض التحديثات المثبتة
Get-HotFix
البحث عن تحديث KB محدد
Get-HotFix -Id KB5034123
ترتيب التحديثات حسب التاريخ
Get-HotFix | Sort-Object InstalledOn -Descending
winget من داخل PowerShell العرض آمن التثبيت/الحذف بحذر
Windows Package Manager يساعدك في عرض وتحديث وتثبيت البرامج. قد لا يكون متاحاً على كل الأجهزة القديمة.
عرض البرامج التي يعرفها winget
winget list
عرض التحديثات المتاحة
winget upgrade
البحث عن برنامج
winget search 7zip
تحديث برنامج محدد
winget upgrade --id 7zip.7zip
10. الإدارة عن بُعد
PowerShell Remoting يحتاج إعداد وصلاحيات مفيد في Domain
تشغيل أوامر على أجهزة أخرى عبر WinRM. ممتاز في بيئات الشركات، لكن يحتاج سياسات وصلاحيات مناسبة.
اختبار WinRM على جهاز بعيد
Test-WSMan SERVER01
فتح جلسة تفاعلية مع جهاز بعيد
Enter-PSSession -ComputerName SERVER01
تشغيل أمر على جهاز بعيد
Invoke-Command -ComputerName SERVER01 -ScriptBlock { Get-Service }تفعيل Remoting على الجهاز الحالي
Enable-PSRemoting -Force
11. Firewall والاتصالات
NetFirewall العرض آمن التعديل يحتاج Admin
عرض وإدارة Windows Defender Firewall من PowerShell.
عرض ملفات Firewall Profiles
Get-NetFirewallProfile
عرض قواعد Firewall المفعلة
Get-NetFirewallRule | Where-Object Enabled -eq True
إنشاء قاعدة تسمح بمنفذ 8080
New-NetFirewallRule -DisplayName "Allow TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
تعطيل Firewall لكل Profiles، استخدمه فقط للاختبار المؤقت
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Get-NetTCPConnection آمن للعرض
يعرض الاتصالات النشطة، بديل PowerShell مفيد لـ netstat.
عرض الاتصالات TCP
Get-NetTCPConnection
البحث عن اتصالات على منفذ 3389
Get-NetTCPConnection -LocalPort 3389
عرض العمليات المالكة للاتصالات
Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, State, OwningProcess
12. Registry ومتغيرات البيئة
Registry Provider القراءة آمنة التعديل خطر
PowerShell يتعامل مع Registry كأنه Drive. القراءة مفيدة، لكن التعديل يحتاج نسخة احتياطية وفهم واضح.
قراءة مفتاح Registry
Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion"
البحث عن قيمة داخل مسار Registry
Get-ChildItem "HKLM:\SOFTWARE" -Recurse -ErrorAction SilentlyContinue | Where-Object Name -like "*keyword*"
إضافة قيمة Registry، استخدمه بحذر
New-ItemProperty -Path "HKCU:\Software\Example" -Name "Setting" -Value "1" -PropertyType String
Environment Variables غالباً آمن
عرض وتعديل متغيرات البيئة للمستخدم أو الجهاز.
عرض PATH للمستخدم الحالي
[Environment]::GetEnvironmentVariable("Path", "User")إضافة متغير بيئة للمستخدم
[Environment]::SetEnvironmentVariable("SUPPORT_HOME", "C:\Support", "User")عرض متغيرات البيئة في الجلسة الحالية
Get-ChildItem Env:
13. Execution Policy والسكربتات
Execution Policy العرض آمن التغيير بحذر
Execution Policy ليست نظام حماية كامل، لكنها تتحكم في تشغيل السكربتات. غيّرها فقط حسب سياسة الشركة.
عرض السياسة الحالية
Get-ExecutionPolicy
عرض السياسات لكل Scope
Get-ExecutionPolicy -List
تعيين RemoteSigned للمستخدم الحالي فقط
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
فك حظر ملف سكربت تم تنزيله
Unblock-File C:\Scripts\support.ps1
Start-Transcript مفيد للتوثيق
يسجل جلسة PowerShell في ملف نصي. ممتاز لتوثيق ما فعلته في تذكرة دعم.
بدء تسجيل الجلسة
Start-Transcript -Path C:\Temp\support-session.txt
إيقاف تسجيل الجلسة
Stop-Transcript
14. التصفية والتصدير والتقارير
Select و Where و Sort آمن
قوة PowerShell الحقيقية تظهر في Pipeline: اختر الأعمدة، صفّ النتائج، ورتّبها.
اختيار أعمدة محددة
Get-Service | Select-Object Name, Status, StartType
فلترة الخدمات المتوقفة
Get-Service | Where-Object Status -eq "Stopped"
ترتيب العمليات حسب CPU
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
Export-Csv و ConvertTo-Json آمن
تصدير النتائج لتقارير قابلة للإرسال أو التحليل لاحقاً.
تصدير الخدمات إلى CSV
Get-Service | Select-Object Name, Status, StartType | Export-Csv C:\Temp\services.csv -NoTypeInformation
تصدير معلومات النظام إلى JSON
Get-ComputerInfo | ConvertTo-Json | Out-File C:\Temp\computerinfo.json
عرض وحفظ المخرجات معاً
Get-NetIPConfiguration | Tee-Object -FilePath C:\Temp\network.txt
15. Active Directory
Active Directory Module Domain حسب الصلاحيات
أوامر يومية لفني الدعم في بيئات Domain.
تحميل الموديول
Import-Module ActiveDirectory
البحث عن مستخدم
Get-ADUser -Identity username -Properties LockedOut, Enabled, LastLogonDate
عرض أجهزة باسم محدد
Get-ADComputer -Filter "Name -like 'PC-*'" -Properties OperatingSystem
عرض أعضاء مجموعة
Get-ADGroupMember -Identity "IT Support"
فتح قفل حساب مستخدم
Unlock-ADAccount -Identity username
16. CMD أم PowerShell؟
| المهمة | CMD مناسب عندما... | PowerShell مناسب عندما... |
|---|---|---|
| تشخيص سريع | تحتاج أمر بسيط مثل ping أو ipconfig. | تحتاج اختبار منفذ، فلترة، أو تقرير قابل للتصدير. |
| إدارة خدمات | تستخدم net stop أو sc بسرعة. | تريد فلترة الخدمات وتصدير حالتها أو تعديلها بكائنات. |
| تقارير | تكتفي بملف نصي. | تحتاج CSV أو JSON أو Pipeline منظم. |
| بيئات Domain | لأوامر بسيطة فقط. | أفضل بكثير مع Active Directory وRemoting. |
17. أفضل الممارسات
- استخدم -WhatIf عند توفره: يوضح ماذا سيحدث بدون تنفيذ فعلي.
- استخدم -Confirm للأوامر الحساسة: خصوصاً عند الحذف أو تعديل الخدمات.
- وثّق الجلسة: استخدم Start-Transcript عند العمل على مشكلة طويلة.
- لا تحفظ كلمات مرور Plain Text: استخدم Read-Host -AsSecureString أو أدوات إدارة أسرار معتمدة.
- صدّر النتائج قبل التغيير: مثال Get-Service | Export-Csv C:\Temp\before.csv.
18. الأخطاء الشائعة
- تشغيل أوامر حذف مع -Recurse بدون مراجعة المسار: خطأ صغير في المسار قد يحذف مجلداً كاملاً.
- استخدام Format-Table قبل Export-Csv: هذا يفسد البيانات. استخدم Select-Object ثم Export-Csv.
- تعطيل Firewall للاختبار ثم نسيانه: استخدم مدة اختبار قصيرة ووثّق التغيير.
- تشغيل سكربتات مجهولة: افحص محتوى السكربت قبل تشغيله، حتى لو كان Execution Policy يسمح بذلك.
- الخلط بين PowerShell 5.1 وPowerShell 7: بعض الموديولات والأوامر تختلف حسب النسخة.
19. الأسئلة الشائعة FAQ
هل PowerShell بديل كامل لـ CMD؟
هل يجب تشغيل PowerShell كـ Administrator دائماً؟
ما الفرق بين Windows PowerShell و PowerShell 7؟
هل Execution Policy حماية كافية؟
20. مراجع رسمية مفيدة
للتفاصيل الأعمق، هذه روابط Microsoft الرسمية التي تفيدك عند كتابة سكربتات أو شرح أمر معيّن لفريقك:
- PowerShell Documentation
- Microsoft.PowerShell.Management Module
- NetTCPIP Module
- LocalAccounts Module
- Windows Package Manager winget
21. الخاتمة
PowerShell هو الخطوة الطبيعية بعد CMD لأي فني دعم يريد الانتقال من التشخيص اليدوي إلى التشخيص المنظم والأتمتة. ابدأ بأوامر القراءة والتصفية، ثم تعلّم التصدير والتقارير، وبعدها انتقل إلى Remoting وActive Directory حسب بيئة عملك.