پاورشل برای برنامهنویسان
@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) تبدیل شود.