ورقة PowerShell المرجعية
مرجع PowerShell قابل للبحث والطباعة — الأوامر، خط الأنابيب، المتغيرات، الملفات، الحلقات، الدوال، الكائنات والإدارة. مجانًا.
الحصول على المساعدة والاستكشاف
12Get-Help Get-Process
عرض مساعدة لـ cmdlet
Get-Help Get-Process -Examples
عرض أمثلة استخدام لـ cmdlet
Get-Help Get-Process -Full
عرض المساعدة الكاملة مع المُعاملات
Get-Help about_Functions
قراءة موضوع مفاهيمي about_
Update-Help
تنزيل أحدث ملفات المساعدة
Get-Command -Noun Process
سرد الـ cmdlets العاملة على اسم noun
Get-Command -Verb Get
سرد الـ cmdlets المستخدمة لفعل verb معيّن
Get-Command *service*
البحث عن أوامر باسم بأحرف بدل wildcard
Get-Process | Get-Member
سرد خصائص وطرق الكائنات
Get-Alias ls
عرض الأمر الذي يحلّ إليه alias
Get-Alias -Definition Get-ChildItem
سرد كل الأسماء البديلة لـ cmdlet
$PSVersionTable
عرض إصدار PowerShell وطبعته
المتغيرات والأنواع
13$x = 5
إسناد قيمة لمتغيّر
[int]$n = '42'
إعلان متغيّر مُحدَّد النوع بقوة
$null
القيمة null / الفارغة
$true; $false
حرفيات منطقية
$arr = @(1, 2, 3)
إنشاء مصفوفة
$arr += 4
إلحاق عنصر بمصفوفة
$arr[0]; $arr[-1]
فهرسة أول وآخر عناصر المصفوفة
$hash = @{ Name = 'Ann'; Age = 30 }
إنشاء hashtable
$hash['Name']; $hash.Name
قراءة قيمة hashtable بالمفتاح
$env:PATH
قراءة متغيّر بيئة
$env:MY_VAR = 'value'
تعيين متغيّر بيئة للجلسة
Get-Variable
سرد كل المتغيرات المعرّفة
[math]::Round(3.14159, 2)
استدعاء طريقة .NET ثابتة
الأنبوب والتصفية
12Get-Process | Where-Object { $_.CPU -gt 10 }
تصفية الكائنات بشرط
Get-Process | ? CPU -gt 10
التصفية بالـ alias ? وصيغة مبسّطة
Get-Process | ForEach-Object { $_.Name }
تشغيل كتلة نصية لكل كائن
Get-Process | % { $_.Kill() }
المرور بالـ alias %
Get-Process | Select-Object Name, Id
إبقاء خصائص محددة فقط
Get-Process | Select-Object -First 5
أخذ أول N كائنات
Get-Process | Sort-Object CPU -Descending
فرز الكائنات حسب خاصية
Get-Process | Group-Object Company
تجميع الكائنات حسب خاصية
Get-Process | Measure-Object CPU -Sum
تجميع القيم الرقمية (مجموع، متوسط)
Get-ChildItem | Select-Object -Unique
إرجاع كائنات متمايزة
1..5 | ForEach-Object { $_ * 2 }
تمرير نطاق عبر تحويل
Get-Process | Out-GridView
إرسال النتائج إلى شبكة تفاعلية
الملفات والمسارات
13Get-ChildItem -Path C:\Logs
سرد عناصر دليل (alias ls/dir)
Get-ChildItem -Recurse -Filter *.log
سرد الملفات المطابقة تكرارياً
Get-Content .\file.txt
قراءة ملف سطراً بسطر
Get-Content .\file.txt -Tail 20
قراءة آخر N أسطر من ملف
Set-Content .\file.txt -Value 'Hi'
كتابة (استبدال) نص إلى ملف
Add-Content .\file.txt -Value 'Hi'
إلحاق نص بملف
Copy-Item a.txt b.txt
نسخ ملف أو دليل
Move-Item a.txt .\dir\
نقل أو إعادة تسمية عنصر
Remove-Item a.txt -Force
حذف ملف أو دليل
New-Item -ItemType Directory -Path .\dir
إنشاء ملف أو دليل جديد
Test-Path .\file.txt
التحقق من وجود مسار
Get-Location
عرض الدليل الحالي (alias pwd)
Set-Location C:\Temp
تغيير الدليل الحالي (alias cd)
السلاسل والنص
12'Hello World' -match 'World'
اختبار سلسلة مقابل تعبير نمطي
'Hello' -replace 'l', 'L'
استبدال نص باستخدام تعبير نمطي
'a,b,c' -split ','
تقسيم سلسلة إلى مصفوفة بتعبير نمطي
'a-b-c'.Split('-')
التقسيم باستخدام طريقة .NET String
'a', 'b' -join ', '
ضم عناصر المصفوفة إلى سلسلة
Select-String -Path *.log -Pattern 'error'
بحث بأسلوب grep عبر الملفات
'{0} of {1}' -f 3, 10
تنسيق سلسلة بنائبات
' hi '.Trim()
إزالة المسافة البيضاء البادئة واللاحقة
'Hello'.ToUpper()
تحويل سلسلة إلى أحرف كبيرة
'Hello'.Substring(0, 3)
استخراج سلسلة فرعية بالفهرس والطول
'Hello'.Contains('ell')
اختبار احتواء سلسلة على نص
'Hello'.Length
الحصول على عدد المحارف
الحلقات والشروط
12if ($x -gt 0) { 'pos' } elseif ($x -eq 0) { 'zero' } else { 'neg' }
التفرّع بـ if / elseif / else
switch ($x) { 1 { 'one' } default { 'other' } }
مطابقة قيمة مقابل حالات
foreach ($i in $arr) { $i }
المرور على مجموعة
for ($i = 0; $i -lt 5; $i++) { $i }
حلقة معدودة بفهرس
while ($x -lt 10) { $x++ }
حلقة طالما الشرط صحيح
do { $x++ } while ($x -lt 10)
حلقة مرة واحدة على الأقل ثم الاختبار
$x -eq 5; $x -ne 5
مقارنات يساوي ولا يساوي
$x -gt 5; $x -lt 5
مقارنات أكبر من وأصغر من
$x -ge 5; $x -le 5
مقارنات أكبر/أصغر من أو يساوي
'abc' -like 'a*'
مقارنة مطابقة بأحرف بدل
@(1, 2, 3) -contains 2
اختبار عضوية في مصفوفة
break; continue
الخروج من تكرار الحلقة الحالي أو تخطّيه
الدوال والسكربتات
12function Get-Sum { param($a, $b) $a + $b }
تعريف دالة بمُعاملات
Get-Sum -a 2 -b 3
استدعاء دالة بوسائط مسمّاة
function Test { param([int]$n = 1) }
مُعامل مُحدَّد النوع بقيمة افتراضية
param([Parameter(Mandatory)]$Name)
اشتراط توفير مُعامل
return $value
إرجاع قيمة من دالة
function F { [CmdletBinding()] param() }
إنشاء دالة متقدمة (مُعاملات شائعة)
Write-Verbose 'msg' -Verbose
إصدار تيار رسائل مفصّل
Write-Output $result
إرسال كائن إلى الأنبوب
Write-Error 'failed'
الكتابة إلى تيار الخطأ
.\script.ps1 -Arg value
تشغيل ملف سكربت بوسائط
. .\functions.ps1
تضمين سكربت في الجلسة بالنقطة dot-source
try { } catch { $_ } finally { }
معالجة الأخطاء المُنهية
الكائنات والخصائص
12Get-Process | Select-Object -ExpandProperty Name
إرجاع قيم الخصائص الخام لا الكائنات
(Get-Process).Name
الوصول إلى خاصية في كل كائن
Get-Process | Select-Object Name, @{ Name = 'MB'; Expression = { $_.WS / 1MB } }
إضافة خاصية محسوبة
[PSCustomObject]@{ Name = 'Ann'; Age = 30 }
بناء كائن مخصص
$obj | Add-Member -NotePropertyName Tag -NotePropertyValue 'x'
إرفاق خاصية بكائن
$obj.PSObject.Properties.Name
سرد أسماء خصائص كائن
$obj | Format-Table -AutoSize
عرض الكائنات كجدول مُحاذى
$obj | Format-List *
عرض كل الخصائص كقائمة
$obj | ConvertTo-Json -Depth 5
تسلسل كائن إلى JSON
Get-Content data.json | ConvertFrom-Json
تحليل JSON إلى كائنات
$obj | Export-Csv out.csv -NoTypeInformation
تصدير الكائنات إلى ملف CSV
Import-Csv data.csv
قراءة ملف CSV إلى كائنات
العمليات والخدمات
12Get-Process
سرد العمليات الجارية (alias ps)
Get-Process -Name chrome
الحصول على العمليات بالاسم
Stop-Process -Name notepad -Force
إنهاء عملية
Start-Process notepad.exe
تشغيل عملية جديدة
Get-Service
سرد خدمات Windows
Get-Service -Name wuauserv
الحصول على خدمة بالاسم
Start-Service -Name wuauserv
بدء خدمة متوقفة
Stop-Service -Name wuauserv
إيقاف خدمة جارية
Restart-Service -Name wuauserv
إعادة تشغيل خدمة
Set-Service -Name wuauserv -StartupType Manual
تغيير وضع بدء خدمة
Get-EventLog -LogName System -Newest 20
قراءة مداخل سجل الأحداث الكلاسيكي الأخيرة
Get-WinEvent -LogName Application -MaxEvents 20
الاستعلام عن سجلات الأحداث الحديثة
العمل عن بُعد والمهام
12Enter-PSSession -ComputerName Srv01
بدء جلسة بعيدة تفاعلية
Exit-PSSession
مغادرة جلسة بعيدة تفاعلية
Invoke-Command -ComputerName Srv01 -ScriptBlock { Get-Service }
تشغيل أمر على مضيف بعيد
$s = New-PSSession -ComputerName Srv01
إنشاء جلسة بعيدة دائمة
Invoke-Command -Session $s -ScriptBlock { hostname }
إعادة استخدام جلسة بعيدة قائمة
Remove-PSSession $s
إغلاق وإزالة جلسة بعيدة
Start-Job -ScriptBlock { Get-Process }
تشغيل أمر كمهمة خلفية
Get-Job
سرد المهام الخلفية وحالتها
Receive-Job -Id 1 -Keep
استرجاع إخراج مهمة
Wait-Job -Id 1
الحجب حتى تكتمل المهمة
Stop-Job -Id 1; Remove-Job -Id 1
إيقاف وإزالة مهمة خلفية
Get-Process | Start-ThreadJob { $input }
تشغيل مهام خيوط خفيفة ضمن العملية
الوحدات والحزم
12Get-Module
سرد الوحدات المحمّلة حالياً
Get-Module -ListAvailable
سرد كل الوحدات المثبّتة
Import-Module Pester
تحميل وحدة في الجلسة
Remove-Module Pester
إلغاء تحميل وحدة من الجلسة
Find-Module -Name PSReadLine
البحث في المعرض عن وحدة
Install-Module PSReadLine -Scope CurrentUser
تثبيت وحدة من المعرض
Update-Module PSReadLine
تحديث وحدة مثبّتة
Uninstall-Module PSReadLine
إزالة وحدة مثبّتة
Get-ExecutionPolicy
عرض سياسة تنفيذ السكربتات الحالية
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
السماح بتشغيل السكربتات الموقّعة والمحلية
Get-PSRepository
سرد مستودعات الحزم المُهيّأة
$PROFILE
مسار سكربت ملف تعريف المستخدم الحالي
لا يوجد إدخال يطابق “:q”.
هل تحتاج إلى مساعدة؟
هل واجهت مشكلة في هذه الأداة؟ أخبر فريقنا.