أساسيات باورشيل: أتمتة المهام في إدارة ويندوز

أتمتة باورشيل لمهام ويندوز

PowerShell هو shell سطر الأوامر ولغة النصوص البرمجية التي تتيح لمحترفي تكنولوجيا المعلومات أتمتة المهام الإدارية في ويندوز. مع PowerShell ، يمكنك إدارة خوادم ويندوز وأجهزة الكمبيوتر المكتبية والتطبيقات والخدمات بكفاءة من خلال واجهة سطر أوامر بسيطة.

في هذا الدليل الشامل ، سنغطي أساسيات استخدام PowerShell لإدارة ويندوز ، بما في ذلك:

  • نظرة عامة على PowerShell
  • الميزات والقدرات الرئيسية
  • تثبيت وتهيئة PowerShell
  • syntax PowerShell ، cmdlets ، و pipelines
  • العمل مع الكائنات في PowerShell
  • النصوص البرمجية مع PowerShell
  • أتمتة المهام وسير العمل
  • إدارة أنظمة وخدمات ويندوز
  • أفضل الممارسات لكتابة النصوص البرمجية PowerShell

مقدمة عن PowerShell

PowerShell هو shell سطر الأوامر القياسي ولغة النصوص البرمجية من مايكروسوفت لإدارة أنظمة تشغيل ويندوز والتطبيقات. كان مكونًا مدمجًا في ويندوز منذ ويندوز 7 و Windows Server 2008 R2.

تتمثل الميزات الرئيسية لـ PowerShell في:

  • يوفر shell سطر أوامر قوية لإدارة الأنظمة
  • يطبق لغة نصوص برمجية لأتمتة المهام
  • يسمح بالوصول إلى .NET Framework من سطر الأوامر
  • يعرض أدوات إدارة ويندوز عبر cmdlets سهلة الاستخدام
  • يوفر قدرات نص برمجي قوية لمعالجة الأوامر دفعة
  • يوفر واجهة API الاستضافة لتكامل PowerShell في التطبيقات
  • تم تصميمه لأتمتة النظام وجدولة المهام

مع PowerShell ، يمكن للمشرفين التحكم في جميع جوانب أنظمة وخوادم ويندوز تقريبًا وأتمتتها. إنه يحل محل أوعية أقدم مثل وحدة تحكم ويستخدم كائنات .NET للتفاعل مع نظام التشغيل.

بالمقارنة مع لغات النصوص البرمجية الأخرى ، يهدف PowerShell إلى توفير syntax وتجربة بسيطة ومتسقة مبنية على .NET Framework. إنه يستفيد من فئات .NET لكشف واجهات برمجة التطبيقات الخاصة بويندوز بطريقة سهلة.

الآن بعد تغطية الأساسيات ، دعونا نتعرف على تثبيت وتكوين PowerShell على ويندوز.

تثبيت وتهيئة PowerShell

يأتي PowerShell مثبتاً مسبقًا مع ويندوز 7 ، و Windows Server 2008 R2 والإصدارات اللاحقة. للتحقق مما إذا كان PowerShell مثبتًا ، افتح وحدة تحكم واكتب powershell.

إذا تم تثبيت PowerShell ، فستدخل shell التفاعلية لـ PowerShell. اكتب exit للخروج من الوعاء.

بالنسبة لإصدارات ويندوز الأقدم ، يمكنك تثبيت PowerShell عبر تنزيلات إطار إدارة ويندوز من مايكروسوفت. يتيح لك ذلك الحصول على أحدث تحديثات PowerShell على أنظمة التشغيل القديمة.

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

لتكوين ملف التعريف الخاص بك ، أنشئ نص برمجي PowerShell يسمى Microsoft.PowerShell_profile.ps1 محفوظ في أي من هذه المجلدات:

  • $HOME\Documents\WindowsPowerShell\ لملف التعريف الشخصي الخاص بك
  • $PSHOME\Microsoft.PowerShell_profile.ps1 كملف تعريف عام لجميع المستخدمين

على سبيل المثال ، لتعيين محث PowerShell مخصص ، أضف ما يلي إلى نص برمجي ملف التعريف الخاص بك:

function prompt {
  Write-Host "$(Get-Date -Format G) [Administrator]" -ForegroundColor Cyan
  Write-Host " $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
  # Prompt for input
  return " "
}

سيعرض هذا ختم تاريخ ووقت واسم مستخدم والدليل الحالي ويعيد مسافة للإدخال في كل مرة تبدأ فيها PowerShell أو تشغيل أمر.

تسمح لك ملفات التعريف بتخصيص الأسماء المستعارة والوظائف ومتغيرات البيئة وتفضيلات PowerShell. الآن دعونا ننتقل إلى syntax PowerShell.

فهم syntax PowerShell

تتبع syntax PowerShell هيكل فعل-اسم للأوامر ، متماشية مع اللغة الطبيعية. الأوامر الرئيسية التي ستقوم بتنفيذها تسمى cmdlets التي تؤدي إجراء على كائن هدف.

تتبع cmdlets مخطط تسمية قياسي Verb-Noun مثل Get-Process ، Set-Location أو Start-Service. يصف الفعل الإجراء ، في حين يمثل الاسم الكيان الذي يتم التصرف عليه.

على سبيل المثال ، لاسترداد قائمة بالعمليات الجاري تشغيلها:

PS C:\> Get-Process

يتصرف هذا الفعل cmdlet Get على اسم العملية لإرجاع جميع العمليات النشطة في النظام.

يمكن أن تأخذ cmdlets معلمات موضعية تغير سلوكها أو تمرير كائنات إدخال. يتم الإشارة إلى المعلمات بواسطة شرطة -Name أو يمكن وضعها مباشرة مثل Get-Process PowerShell.

يمرر التوجيه | الإخراج من cmdlet واحد إلى إدخال آخر. هذا يسمح لك بتسلسل أوامر متعددة معًا مثل:

PS C:\> Get-Process | Where-Object { $_.CPU -gt 1000 }

يحصل هذا على العمليات ، ويرشح تلك التي تزيد CPU عن 1000 ، ويمررها أسفل الخط.

بالإضافة إلى cmdlets ، يدعم PowerShell جميع syntax البرمجة العادية مثل المتغيرات والحلقات والشروط والمفاتيح والوظائف والفئات ، إلخ. دعونا نلقي نظرة على بعض الأمثلة:

المتغيرات:

$processName = "PowerShell"
Get-Process -Name $processName

شرطي If/Else:

$cpu = Get-Process PowerShell | Select-Object -ExpandProperty CPU 
if ($cpu -gt 1000) {
  Write-Host "CPU مرتفع!"
} else {
  Write-Host "CPU طبيعي"
}

حلقة For:

$processes = Get-Process
for($i = 0; $i -lt $processes.length; $i++) {
  Write-Host $processes[$i]
}

الوظائف:

function Get-TopProcesses {
  Get-Process | Sort-Object -Property CPU -Descending | Select-Object -First 10
}
Get-TopProcesses

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

الآن بعد تغطيتنا للأساسيات في استخدام PowerShell تفاعليًا ، دعونا نلق نظرة على كيفية أخذ هذه المفاهيم إلى المستوى التالي مع النصوص البرمجية.

النصوص البرمجية مع PowerShell

إحدى القوى الرئيسية لـ PowerShell هي إمكانات النصوص البرمجية للأتمتة والمعالجة الدفعية. تحتوي نصوص برمجة PowerShell على أوامر في مستند PowerShell محفوظ بامتداد .ps1.

توفر النصوص البرمجية فوائد مثل:

  • أتمتة المهام المتكررة
  • تشجيع إعادة الاستخدام للاتساق
  • السماح بالتنفيذ غير التفاعلي
  • توحيد الإجراءات والسياسات
  • تمكين التحكم في الإصدارات والمشاركة

دعونا نتعرف على مثال بسيط لنص برمجي PowerShell يطبع رسالة وينفذ مجموعة من الأوامر:

# مثال نص برمجي PowerShell
Write-Host "تشغيل نص برمجي PowerShell!"
Get-Service -Name 'Bits'
Start-Service -Name 'Bits'  
Write-Host "تم تشغيل خدمة Bits."
Get-Process -Name 'Outlook'
Stop-Process -Name 'Outlook'

يطبع هذا رسالة ، ويحصل على حالة خدمة Bits ، ويبدأها ، ثم يوقف أي عمليات Outlook قيد التشغيل.

لتنفيذ النص البرمجي ، قم بتشغيل:

PS C:\> .\myScript.ps1

حيث myScript.ps1 هو اسم نص برمجينا كمثال.

يمكن للنصوص البرمجية استخدام جميع syntax برمجة التي ناقشناها مثل المتغيرات والشروط والحلقات والوظائف والفئات ، إلخ. إنها تدعم تمرير الوسائط للنصوص البرمجية ذات المعلمات.

على سبيل المثال:

param(
  [string]$ServiceName
)
Get-Service -Name $ServiceName
if ((Get-Service -Name $ServiceName).Status -ne 'Running') {
  Start-Service -Name $ServiceName
  Write-Host "Started $ServiceName service"  
}

يحدد هذا معلمة $ServiceName التي يتم تمريرها عند استدعاء النص البرمجي. يبحث النص البرمجي عن حالة الخدمة ويبدأها بشكل مشروط إذا لم تكن قيد التشغيل بالفعل.

لتنفيذ نص برمجي معلم:

PS C:\> .\Start-Service.ps1 -ServiceName 'Bits'

يمرر هذا ‘Bits’ إلى معلمة $ServiceName.

بهذه الطريقة ، يوفر PowerShell أدوات قوية للغاية لكتابة النصوص البرمجية للمهام الإدارية.

دعونا ننظر الآن في كيفية استخدام PowerShell لأتمتة سير العمل والعمليات في ويندوز.

أتمتة المهام باستخدام PowerShell

أحد المزايا الرئيسية لـ PowerShell هو قدرته على أتمتة سير العمل لأداء المهام المتكررة. تشمل بعض الأمثلة:

  • إنشاء الحسابات المستخدم بشكل مكثف
  • توفير الخادم المؤتمت
  • النشر البرمجيات دفعة
  • عمليات النسخ الاحتياطي الليلية
  • جدولة المهام

يجعل PowerShell سهلاً نص برمجة هذه الإجراءات وتشغيلها عند الطلب أو وفقًا لجدول زمني.

على سبيل المثال ، لأتمتة عملية نسخ احتياطي للملفات ليلاً:

# Backup-Files.ps1
$backupDir = "D:\Backups"
$folders = Get-ChildItem -Path "C:\Users"
foreach ($folder in $folders) {
  $fromPath = $folder.FullName
  $toPath = Join-Path -Path $backupDir -ChildPath $folder.Name
  
  Copy-Item -Path $fromPath -Destination $toPath -Recurse -Force
  Write-Host "Backed up $fromPath to $toPath"
}

يتم تكرارها من خلال مجلدات المستخدم ، ونسخها إلى موقع نسخ احتياطي ، وتسجيل الإخراج.

يمكننا بعد ذلك جدولتها للتشغيل كل ليلة باستخدام مجدول المهام مع مجدول زمني مثل:

مجدول زمني: يومي
الساعة: 11 مساء
تكرار: إلى أجل غير مسمى

لنشر البرمجيات ، يوفر PowerShell cmdlets مثل Install-Package لنشر حزم MSI:

$packages = @('package1.msi', 'package2.msi')
foreach ($package in $packages) {
  Write-Host "Installing package: $package"
  Start-Process msiexec.exe -ArgumentList "/i $package /quiet" -Wait
}

يتكرر هذا عبر مصفوفة من الحزم ، ويطبع رسالة ، ويثبتها بهدوء عبر msiexec.exe.

يجعل PowerShell من السهل تقريبًا أتمتة عمليات تكنولوجيا المعلومات المتكررة مثل النسخ الاحتياطي والنشر وإعداد المستخدم ، إلخ. دعونا نستكشف بعد ذلك إدارة خدمات ويندوز الأساسية باستخدام PowerShell.

إدارة ويندوز باستخدام PowerShell

بالإضافة إلى الأتمتة ، PowerShell مفيد للغاية في إدارة خوادم ويندوز وأجهزة الكمبيوتر المكتبية والتطبيقات. يمكن التحكم في جميع جوانب إدارة ويندوز تقريبًا عبر أوامر PowerShell cmdlets.

تشمل بعض الأمثلة:

الخدمات:

  • Get-Service – الحصول على حالة الخدمة
  • Start-Service – تشغيل خدمة
  • Stop-Service – إيقاف خدمة قيد التشغيل
  • Restart-Service – إعادة تشغيل خدمة
  • New-Service – إنشاء خدمة جديدة

العمليات:

  • Get-Process – سرد العمليات الجاري تشغيلها
  • Stop-Process – إيقاف عملية
  • Start-Process – بدء عملية جديدة
  • Wait-Process – انتظار انتهاء عملية

سجلات الأحداث:

  • Get-EventLog – الحصول على سجلات أحداث ويندوز
  • Clear-EventLog – مسح سجل أحداث
  • Write-EventLog – كتابة حدث إلى سجل

تحديثات ويندوز:

  • Get-WindowsUpdate – عرض التحديثات المتاحة
  • Install-WindowsUpdate – تثبيت التحديثات

الشبكة:

  • Get-NetIPConfiguration – عرض إعدادات عنوان IP
  • Set-DNSClientServerAddress – تعيين خوادم DNS
  • Test-NetConnection – اختبار اتصال الشبكة

Active Directory:

  • Get-ADUser – استعلام مستخدمي AD
  • New-ADUser – إنشاء مستخدم AD جديد
  • Set-ADUser – تعديل مستخدم AD
  • Remove-ADUser – حذف مستخدم AD

نظام الملفات:

  • Get-ChildItem – سرد الملفات والمجلدات
  • Copy-Item – نسخ الملفات والمجلدات
  • Move-Item – نقل الملفات والمجلدات
  • Remove-Item – حذف الملفات والمجلدات

تعطي هذه القائمة عينة صغيرة من مهام الإدارة التي يمكن إدارتها عبر أوامر PowerShell cmdlets. يمكن استخدام أي مكون بأدوات إدارة معرّضة عبر .NET من سطر الأوامر.

دعونا نرى بعض أمثلة الاستخدام لإدارة الخدمات باستخدام PowerShell:

الحصول على حالة خدمة الطباعة:

PS C:\> Get-Service -Name 'Spooler'

إعادة تشغيل خدمة متوقفة:

PS C:\> Restart-Service -Name 'Spooler'

تعطيل خدمة:

PS C:\> Set-Service -Name 'BITS' -StartupType Disabled

إنشاء خدمة مراقب ملفات جديدة:

PS C:\> New-Service -Name 'FileWatcher' -BinaryPathName 'C:\FileWatcher.exe'

توضح هذه الأمثلة كيف يتيح لك PowerShell التحكم مباشرة في مكونات ويندوز مثل الخدمات والعمليات والتحديثات والشبكات والسجلات و AD ونظام الملفات ، إلخ.

أفضل الممارسات لكتابة النصوص البرمجية PowerShell

عند تطوير النصوص البرمجية لـ PowerShell للأتمتة والإدارة ، يساعد اتباع أفضل الممارسات في إنشاء رمز قوي وموثوق وقابل للصيانة. وتشمل بعض التوجيهات:

  • إضافة مساعدة مبنية على التعليقات لتوثيق النصوص البرمجية
  • الاستفادة من النصوص البرمجية ذات المعلمات مع التحقق من صحة الإدخال
  • استخدام تسمية فعل-اسم متسقة للوظائف المخصصة
  • تجنب القيم الثابتة ، واستخدام المتغيرات بدلاً من ذلك
  • التعامل مع الأخطاء بأناقة باستخدام كتل try/catch
  • السماح بتشغيل النصوص البرمجية بشكل غير تفاعلي مع -NoProfile
  • تنسيق الإخراج لسهولة القراءة باستخدام المسافات والسطور الجديدة والنص
  • اختبار النصوص البرمجية دائمًا بشكل كامل قبل الاستخدام الإنتاجي
  • استخدام التحكم في الإصدارات مثل Git لتتبع التغييرات
  • تخزين النصوص البرمجية في مستودع تحت التحكم المصدري
  • تقييد تعرض الصلاحيات – تجنب استخدام الحسابات المديرة في النصوص البرمجية
  • عدم تعريض كلمات المرور أو الأسرار في النصوص البرمجية
  • استدعاء النصوص البرمجية من نصوص برمجية wrapper للاتساق

ستفيدك اعتماد المعايير وأفضل الممارسات لنصوص برمجة PowerShell على المدى الطويل وستمكن الآخرين من فهم والاستفادة من رمزك.

استنتاج

في هذا الدليل ، غطينا أساسيات PowerShell لإدارة المهام وأتمتتها في بيئات ويندوز. تضمنت المواضيع الرئيسية:

  • نبذة عن PowerShell وقدراتها
  • تثبيت وتهيئة PowerShell
  • Syntax PowerShell و cmdlets و pipelines
  • النصوص البرمجية مع PowerShell للأتمتة
  • إدارة خدمات وعمليات ومكونات ويندوز
  • أفضل الممارسات لكتابة نصوص برمجية PowerShell

مع واجهة سطر أوامر PowerShell القوية وتكامل .NET ولغة النصوص البرمجية العالمية ، يمكنك التحكم في جميع جوانب أنظمة ويندوز تقريبًا وحل المشاكل الحقيقية.

آمل أن يوفر هذا المقال أساسًا صلبًا للاستفادة من إمكانيات PowerShell لإدارة الخوادم ومحطات العمل. تعتبر مهارات PowerShell ذات قيمة كبيرة لمشرفي ويندوز الذين يسعون إلى تقليل المهام المتكررة وتحسين الكفاءة.

LEAVE A COMMENT