پاورشل برای برنامهنویسان
@programming_tipsدرسنامه: پارامترها و سوییچها در PowerShell
۱. پارامتر چیست؟
هر Cmdlet معمولاً فقط یک کار کلی انجام میدهد، اما برای اینکه دقیق مشخص کنیم چه چیزی یا چطور باید انجام شود، از پارامترها استفاده میکنیم.
پارامترها مثل گزینههایی هستند که به دستور اضافه میکنید.
برای مثال:
Get-Process -Name notepad
اینجا -Name یک پارامتر است که تعیین میکند میخواهیم فقط پروسهای با نام "notepad" برگردد.
۲. ساختار نوشتن پارامتر
پارامترها معمولاً با خط تیره شروع میشوند. بعد از آن یا مقدار میگیرند یا به تنهایی استفاده میشوند.
نمونهها:
- پارامتر همراه با مقدار:
Get-Service -Name Spooler
- یعنی سرویس "Spooler" را بیاور.
- پارامتر بدون مقدار (سوییچ):
Get-Help Get-Process -Examples
- در اینجا
-Examplesفقط یک حالت را فعال میکند و نیاز به مقدار ندارد.
۳. پارامترهای پوزیشنی
در PowerShell بعضی پارامترها بهصورت پوزیشنی تعریف شدهاند. یعنی اگر مقدار را به ترتیب درست وارد کنید، لازم نیست اسم پارامتر را بنویسید.
برای مثال:
Get-Process -Name notepad
و
Get-Process notepad
هر دو یکسان هستند، چون -Name پارامتر پوزیشنی اول برای Get-Process است.
نکته مهم: برای اسکریپتنویسی حرفهای بهتر است همیشه اسم پارامتر را بنویسید تا کدتان خواناتر باشد.
۴. سوییچها (Switch Parameters)
سوییچها پارامترهایی هستند که فقط حالت روشن یا خاموش دارند.
یعنی یا مینویسید و فعال میشود، یا نمینویسید و غیرفعال است.
نمونهها:
# نمایش فقط سرویسهای در حال اجرا Get-Service -Running # نمایش مثالهای راهنما Get-Help Get-Command -Examples
در اینجا -Running و -Examples هیچ مقداری نمیگیرند.
۵. پارامترهای اجباری و اختیاری
برخی Cmdletها پارامترهایی دارند که حتماً باید مقدارشان را بدهید، وگرنه دستور کار نمیکند.
بعضی پارامترها اختیاری هستند و فقط رفتار دستور را تغییر میدهند.
برای فهمیدن اینکه کدام پارامترها اجباریاند، میتوانید از Get-Help استفاده کنید:
Get-Help Get-Process -Full
در خروجی مشخص میشود که کدام پارامترها Mandatory هستند.
۶. پارامترهای ترکیبی
بسیاری از دستورات قابلیت گرفتن چند پارامتر همزمان را دارند.
مثال:
Get-EventLog -LogName System -Newest 5
اینجا:
-LogNameمشخص میکند کدام لاگ بررسی شود.-Newest 5میگوید فقط ۵ مورد آخر را بیاور.
ترکیب پارامترها باعث میشود Cmdlet دقیقاً همان خروجی را بدهد که شما نیاز دارید.
۷. کوتاهنویسی پارامترها
پاور شل امکان میدهد اگر ابتدای نام پارامتر یکتا باشد، میتوانید کوتاهنویسی کنید.
برای مثال:
Get-Process -N notepad
چون فقط یک پارامتر با حرف N وجود دارد (-Name)، دستور درست اجرا میشود.
ولی برای خوانایی کد، پیشنهاد میشود از نام کامل پارامتر استفاده کنید.
۸. چرا پارامترها مهماند؟
۱. بدون پارامترها Cmdletها خیلی محدود میشوند.
۲. پارامترها باعث میشوند یک دستور ساده در شرایط مختلف انعطافپذیر باشد.
۳. برای اسکریپتنویسی و اتوماسیون، تسلط بر پارامترها ضروری است.
۴. فهمیدن سوییچها و پارامترهای پوزیشنی سرعت کار را بالا میبرد.
تمرین برای شما
۱. با استفاده از Get-Help، پارامترهای Get-ChildItem را پیدا کنید.
۲. سعی کنید با -Recurse همه فایلهای داخل پوشهها را لیست کنید.
۳. خروجی را فقط به فایلهایی با پسوند .txt محدود کنید.
🔑 خلاصهی درسنامه:
- پارامترها گزینههایی برای تنظیم رفتار Cmdletها هستند.
- بعضی پارامترها مقدار میگیرند، بعضی (سوییچها) فقط فعال یا غیرفعالاند.
- برخی پارامترها پوزیشنیاند و میتوان بدون نامبردن از آنها استفاده کرد.
- استفاده درست از پارامترها باعث انعطافپذیری و قدرت بیشتر PowerShell میشود.