پاورشل برای برنامه‌نویسان

پاورشل برای برنامه‌نویسان

@programming_tips

درسنامه: اشیا و شی‌گرایی در PowerShell

پاورشل بر پایه‌ی شی‌گرایی (Object-Oriented) ساخته شده است. این یعنی برخلاف خط فرمان قدیمی (مثل CMD یا Bash) که خروجی دستورات فقط متن (string) بود، در PowerShell خروجی‌ها اشیا (objects) هستند. این ویژگی مهم‌ترین تفاوت و نقطه‌ی قوت PowerShell است، چون به برنامه‌نویس اجازه می‌دهد داده‌ها را دقیق‌تر و ساخت‌یافته‌تر پردازش کند.


مفهوم شی (Object)

در PowerShell، هر داده‌ای که با آن کار می‌کنید یک شی است — از یک عدد ساده گرفته تا فایل‌های روی دیسک، سرویس‌های سیستم یا حتی نتیجه‌ی یک دستور. هر شی از یک کلاس ساخته شده و شامل دو بخش است:

  • Property (ویژگی): مشخصاتی از شی را نشان می‌دهد، مثل نام فایل، اندازه، یا زمان ایجاد آن.
  • Method (متد): عملیاتی است که می‌توان روی شی انجام داد، مثل حذف، کپی، یا تبدیل فرمت.

برای مثال، اگر دستور زیر را بنویسید:

Get-Process

خروجی این دستور فقط متن نیست، بلکه لیستی از اشیا از نوع Process برمی‌گرداند. هر شی‌یی که برگردانده می‌شود دارای Propertyهایی مثل Id، ProcessName و CPU است و Methodهایی مثل Kill() دارد.


مشاهده‌ی Property و Methodها

برای دیدن Property و Methodهای یک شی، می‌توانید از دستور Get-Member استفاده کنید. این دستور ساختار دقیق اشیاء را نشان می‌دهد:

Get-Process | Get-Member

این دستور لیستی از Property و Methodهایی را که مربوط به اشیاء Process هستند نمایش می‌دهد.

اگر بخواهید فقط Propertyها را ببینید، می‌توانید فیلتر کنید:

Get-Process | Get-Member -MemberType Property

دسترسی به Propertyها

برای دسترسی به Property خاصی از یک شی، از نقطه (dot notation) استفاده می‌کنیم:

$p = Get-Process | Select-Object -First 1
$p.ProcessName
$p.Id
$p.CPU

در اینجا $p یک شی از نوع Process است و می‌توانیم به هر خاصیت آن دسترسی داشته باشیم.


استفاده از Methodها

Methodها کارهایی هستند که می‌توان روی شی انجام داد. مثلاً متد Kill() در اشیاء Process باعث پایان دادن به یک فرآیند می‌شود:

$p = Get-Process notepad
$p.Kill()

در این مثال، برنامه‌ی Notepad بسته می‌شود.


ساخت اشیاء جدید

می‌توان اشیاء جدید هم ساخت، مثلاً با New-Object:

$person = New-Object PSObject -Property @{
    Name = "Ali"
    Age = 27
    Skill = "Python"
}

در این مثال، یک شی جدید با سه Property ساخته شده است. برای دسترسی به مقادیر آن:

$person.Name
$person.Age
$person.Skill

افزودن Property یا Method جدید

PowerShell اجازه می‌دهد به اشیاء خود Property جدید اضافه کنید:

$person | Add-Member -MemberType NoteProperty -Name "Country" -Value "Iran"
$person.Country

شی‌گرایی در عمل

مثلاً فرض کنید خروجی دستور Get-Service را می‌خواهید فقط برای سرویس‌هایی نشان دهید که در حال اجرا هستند:

Get-Service | Where-Object { $_.Status -eq "Running" }

در اینجا $_ اشاره به هر شی از نوع Service دارد، و ما به Property Status آن دسترسی داریم.

یا اگر بخواهید فقط نام آن‌ها را ببینید:

Get-Service | Where-Object { $_.Status -eq "Running" } | Select-Object Name

جمع‌بندی

در PowerShell همه‌چیز شی است — خروجی‌ها، ورودی‌ها و حتی متغیرها. این ساختار باعث می‌شود داده‌ها قابل فهم‌تر، منعطف‌تر و قدرتمندتر باشند. به‌جای پردازش متن، با اشیاء کار می‌کنید؛ و همین موضوع باعث می‌شود PowerShell به ابزاری ایده‌آل برای مدیریت سیستم، اسکریپت‌نویسی، و خودکارسازی (Automation) تبدیل شود.

Report Page