پاورشل برای برنامهنویسان
@programming_tipsدرسنامه: PowerShell چیست و چرا با CMD فرق دارد؟
وقتی از ترمینال در ویندوز صحبت میکنیم، معمولاً دو ابزار به ذهن میرسه: CMD (Command Prompt) و PowerShell. خیلیها این دوتا رو یکی میدونن یا فکر میکنن PowerShell فقط یه نسخه ارتقایافته از CMD هست. ولی در واقعیت، PowerShell یک دنیای کاملاً متفاوت و قدرتمندتره.
ابزار CMD چیست؟
ابزار CMD یا همون Command Prompt ابزاریه که از دهه ۹۰ میلادی همراه ویندوز اومده و بر اساس دستورهای قدیمی MS-DOS ساخته شده. با CMD میشه کارهای سادهای مثل تغییر پوشه، کپی و حذف فایلها، یا اجرای برنامهها رو انجام داد.
اما محدودیت بزرگش اینه که خروجیها رو فقط به صورت متن ساده میده. به همین خاطر وقتی میخوای خروجی یک دستور رو به دستور دیگه بدی (Pipeline)، معمولاً باید با متن خام و Parsing دستی سر و کله بزنی.
ابزارPowerShell چیست؟
ابزار PowerShell در سال ۲۰۰۶ توسط مایکروسافت معرفی شد و هدفش این بود که یک ابزار خط فرمان مدرن و چندمنظوره باشه. PowerShell نهتنها جایگزین CMD شد، بلکه یک زبان اسکریپتنویسی شیگرا هم هست. یعنی هم میتونی مثل یک ترمینال دستور اجرا کنی، هم میتونی اسکریپتهای پیچیده و اتوماسیون بنویسی.
PowerShell بر پایهی .NET Framework ساخته شده (و نسخههای جدیدش بر پایهی .NET Core هستن). این یعنی همهچیز در PowerShell یک شیء (Object) است. برخلاف CMD که خروجی متنی میده، PowerShell خروجیها رو به شکل شیء برمیگردونه. همین موضوع باعث میشه کار با دادهها خیلی راحتتر و قدرتمندتر باشه.
مثلاً در CMD اگه بخوای لیست پروسهها رو ببینی و فقط نامهاشون رو بگیری، باید خروجی متنی رو پردازش کنی. ولی در PowerShell کافیه بگی:
Get-Process | Select-Object -Property ProcessName
اینجا Get-Process یه لیست از اشیاء پروسهها برمیگردونه و Select-Object خیلی راحت فقط پراپرتی موردنظر رو نشون میده.
تفاوتهای کلیدی بین CMD و PowerShell
۱. نوع خروجی: CMD متن برمیگردونه، PowerShell اشیاء.
۲. زبان اسکریپتنویسی: CMD فقط دستورات سادهی خط فرمان رو اجرا میکنه. PowerShell خودش یک زبان کامل با شرطها، حلقهها، توابع و حتی پشتیبانی از شیگراییه.
۳. ماژولها و Cmdletها: PowerShell یک مجموعهی عظیم از دستورات آماده (Cmdlet) داره که کارهای پیچیده رو راحت میکنن. همچنین میتونی ماژولهای جدید نصب کنی.
۴. ارتباط با سیستم و برنامهها: PowerShell میتونه با رجیستری، سرویسهای ویندوز، پروسهها، APIها و حتی سرویسهای ابری ارتباط برقرار کنه. CMD چنین قابلیتی نداره.
۵. چند سکویی بودن: نسخههای جدید PowerShell (موسوم به PowerShell Core) روی ویندوز، لینوکس و مک هم اجرا میشن. ولی CMD فقط مخصوص ویندوزه.
چرا برای برنامهنویسها مهمه؟
یک برنامهنویس با PowerShell میتونه:
- محیط توسعه خودش رو اتوماتیک راهاندازی کنه.
- با APIهای وب و سرویسها کار کنه.
- Build و Deployment پروژهها رو مدیریت کنه.
- تستها رو اجرا کنه و لاگها رو پردازش کنه.
- حتی ابزارهای خط فرمان شخصی بسازه.
به همین خاطر PowerShell فقط یک جایگزین برای CMD نیست، بلکه یک ابزار قدرتمند برای اتوماسیون، DevOps، و برنامهنویسی سیستم محسوب میشه.
🔑 خلاصهی درسنامه:
ابزار CMD یک محیط ساده برای اجرای دستورات متنی قدیمی ویندوزه. PowerShell یک ترمینال مدرن و زبان اسکریپتنویسی شیگراست که بر پایه .NET ساخته شده و خروجیهاش به شکل اشیاء هستن. این تفاوت باعث میشه برای برنامهنویسها ابزاری فوقالعاده قوی در زمینهی اسکریپتنویسی و اتوماسیون باشه.