تفاوت پاورشل و CMD چیست؟
هر دو ابزار پاورشل و CMD به عنوان CLI فعالیت می کنند و امکان تعامل با سیستم عامل و مدیریت انواع تسک ها را برای کاربران ویندوز فراهم می کنند اما وقتی بحث تفاوت پاورشل و CMD باز می شود، نکات بسیار مهمی ظاهر می شوند که انتخاب را برای کاربران سخت می کنند.
Powershell نسخه جدید و پیچیده CMD است که به خاطر بهره مندی از امکانات و قابلیت های پیشرفته تر، کاربردهای بیشتری (مخصوصاً در حوزه برنامه نویسی) نسبت به CMD دارد ولی اکثر کارهایی که با CMD انجام می شوند با پاورشل هم قابل انجام هستند.
آشنایی با تفاوت هایی مثل سینتکس، کاربرد، عملکرد و نوع خروجی می تواند انتخاب را برای شما راحت تر کند تا ابزار ایده آل برای تعامل با سیستم یا سرور ویندوز را انتخاب کنید.
اگر هم به دنبال سرور ویندوزی هستید که راحتی لازم در مورد اجرای انواع دستورات CMD و پاورشل را به شما بدهد، توصیه می کنیم که به صفحه خرید سرور مجازی ویندوز (Windows VPS) مراجعه کنید.
CMD چیست؟
Windows Command Prompt با مخفف CMD برای اولین بار در سال ۱۹۸۷ همراه سیستم عامل DOS عرضه شد و به عنوان مفسر خط فرمان پیشفرض سیستم عامل های ویندوز مورداستفاده قرار می گیرد.
این ابزار بیشتر برای انجام تسک های مدیریتی روتین مثل بکاپ گیری، آپدیت، بروزرسانی، مدیریت کاربران، راه اندازی سرویس ها و برنامه ها استفاده می شود.
در واقع، کاربرانی که به فکر استفاده از حافظه کمتر هستند و می خواهند به جای کار کردن با محیط دسکتاپ، یک سری کارهای عادی را با استفاده از دستورات خط فرمان جلو ببرند، می توانند از CMD استفاده کنند و در حافظه و زمان صرفه جویی کنند.
موارد استفاده از CMD
- مدیریت فایل ها و دایرکتوری ها
- اجرای برنامه ها و اسکریپت ها
- اجرای فایل های batch
- خودکارسازی کارهای مدیریتی روتین
- بررسی اتصالات شبکه ای
- پیکربندی شبکه
- …
PowerShell چیست؟
powerful shell با مخفف PowerShell، نسخه پیشرفته CMD است که در سال ۲۰۰۶ منتشر شده است.
این ابزار علاوه بر تمام ویژگی های CMD از دستورالعمل های خط فرمان و اسکریپت جدیدی پشتیبانی می کند که مدیران سیستم ویندوز به کمک آنها می توانند از مدیریت و پیکربندی تسک های پیچیده سیستم بربیایند.
از نقاط قوت اصلی پاورشل می توان به انعطاف آن در زمینه نوشتن و اجرای انواع اسکریپت ها و پایپ کردن cmdlet ها به همدیگر اشاره کرد. درواقع، انعطاف و گستردگی امکانات پاورشل باعث شده است که کاربران در زمینه اجرای انواع تسک های ساده تا پیچیده به مشکل نخورند و استراتژی های موردنظر خود را با خیال راحت پیاده سازی کنند.
موارد استفاده از پاورشل
- مدیریت سیستم
- مدیریت فایل
- پیکربندی شبکه
- مدیریت کاربران
- مانیتورینگ سیستم
- توسعه و اجرای انواع اسکریپت ها
- مدیریت منابع
- خودکارسازی عملیاتی مثل آپدیت و نصب نرم افزار، خطایابی و پیکربندی شبکه
- پردازش و مدیریت داده
- …
مقایسه تفاوت پاورشل و CMD
برای اینکه بتوانید برای تسک موردنظر خود، مناسب ترین ابزار را انتخاب کنید، ابتدا باید تفاوت های آنها را از جنبه های مختلف بررسی کنید تا برای تصمیم گیری درست، ایده کافی داشته باشید:
زبان و ساختار داده
هر دو ابزار cmd و پاورشل مبتنی بر متن هستند ولی مجموعه دستورات آنها باهم تفاوت زیادی دارند. شاید چون با خط فرمان cmd کار کرده اید، دستورات آن برای شما قابل حفظ تر باشد و مثلاً استفاده از cd در CMD به جای set-location در پاورشل برای تغییر مسیر دایرکتوری برایتان راحت تر باشد.
اما مجموعه دستورات PowerShell یا همان cmdlet ها بسیار گسترده است که با استفاده از آنها می توانید از عهده یک سری کارهایی بربیایید که کاربران CMD خبری از آنها ندارند.
همچنین، اگر بتوانید نحوه استفاده از قابلیت alias پاورشل را یاد بگیرید، می توانید دستورات پیچیده و طولانی را به حالت کوتاه تر و خلاصه تر دربیایید تا اجرای آنها برایتان راحت تر شود.
برای اینکه بتوانید فرق بین سینتکس cmd و پاورشل را بهتر درک کنید، باید با انواع دستورات هر کدام از آنها آشنا شوید ولی این را فراموش نکنید که نحوه نامگذاری cmdlet های پاورشل بر اساس” فعل – اسم” کاری است که انجام می دهند و اینگونه می توانید وظیفه هر دستور را به راحتی از اسم آن استنباط کنید.
چند مثال از دستورات cmd و powershell:
کاربرد | دستور CMD | دستور powershell |
تغییر دایرکتوری | cd /path | set-location /path |
مشاهده لیست دایرکتوری فعلی | dir | Get-ChildItem |
مشاهده آدرس آی پی | ipconfig | Get-NetIPAddress |
تغییر اسم فایل | rename | Rename-Item |
خاموش کردن سیستم ویندوز | shutdown /s | Stop-computer |
اگر می خواهید تمام دستورات CMD و پاورشل را ببینید تا راحت تر تصمیم بگیرید، می توانید از دستور help کمک بگیرید.
CMD
help
پاورشل
Get Help
آشنایی با دستورات اصلی cmd و نحوه کار با دستور Get-Help در پاورشل هم می تواند نوری در این مسیر تصمیم گیری باشد.
توسعه پذیری
وقتی بحث توسعه می شود، پاورشل یک قدم جلوتر می گذارد و دلیل اصلی آن قابلیت پایپ کردن دستورات و cmdlet ها است.
به این صورت که CMD فقط می تواند متن را با دستور دیگری که اکثرا با فایل سروکار دارد، ردوبدل کند ولی پاورشل دارای قابلیت های ریدایرکت گسترده تری است.
دستورات زیر چند نمونه ریدایرکت مسیر با CMD هستند:
(<) ایجاد یک فایل جدید یا بازنویسی فایل موجود با خروجی استاندارد
(<<) اضافه کردن خروجی استاندارد به یک فایل
(>) ریدایرکت یا انتقال محتوای یک فایل به یک دستور
ولی وجود قابلیت های ریدایرکت دیگر مثل pip در پاورشل این امکان را به شما می دهد که بین cmdletها ارتباط برقرار کنید و خروجی آنها را به همدیگر منتقل کنید. اینگونه است که می توانید بین برنامه های مختلف سیستم یا حتی سیستم های مختلف موجود در شبکه تعامل برقرار کنید.
دستور زیر یک نمونه از قابلیت پایپ دستورات در پاورشل هستند:
Get-Process | Where-Object {$_.Name -like "Microsoft*"}
این دستور، فقط لیست فرآیندهایی را نشان می دهد که اسم آنها حاوی Microsoft است.
فرمت خروجی
خروجی CMD به صورت متن ساده است به همین دلیل پردازش داده های خروجی خط فرمان کمی چالش برانگیز است.
از طرف دیگر، خروجی ابزار پاورشل دارای ماهیت شی گرایی است و اشیایی که به عنوان خروجی برمی گرداند، به روش های مختلف مثل جدول، لیست و فایل CSV قابل مرتب سازی هستند.
به این صورت که اگر در انتهای دستور، نوع فرمت را به صورت Format-List ،Format-Table یا Export-Csv مشخص کنید، می توانید خروجی را به همان فرمت دریافت کنید و از آن برای انجام تسک های موردنظر خود استفاده کنید.
اهمیت قابلیت پایپ با دستورات و برنامه های دیگر با خروجی ساختار یافته پاورشل چند برابر می شود و اینجاست که قدرت پاورشل برای انجام انواع تسک های ساده و پیچیده قابل درک می شود.
اسکریپت نویسی
هر دو ابزار CMD و پاورشل در زمینه برنامه نویسی و اسکریپت نویسی قابل استفاده هستند ولی CMD نسبت به پاورشل با محدودیت های زیادی روبرو است.
برنامه نویسی در خط فرمان به فایل های bat و cmd متکی است که در ویرایشگر notepad نوشته شده اند. این روش برنامه نویسی از بسیاری از ویژگی های مدرنی که ادمین ها به آن نیاز دارند مثل پیشتیبانی از داده های ساختار یافته (آرایه ها، اشیا و ) محروم هستند.
پاورشل این بار هم یک قدم جلوتر می گذارد چون یک زبان برنامه نویسی شی گرا، توسعه پذیر با فریمورک .net همراه با محیط توسعه ISE، ساختارهای کنترلی پیشرفته و کتابخانه های متنوع ارائه می دهد که کارهای پیچیده را برای مدیران راحت می سازند- البته به شرطی که از تخصص و مهارت لازم برای استفاده از این قابلیت ها و امکانات برخوردار باشند.
به طور خلاصه، هر دو ابزار برای اسکریپت نویسی مساعد هستند منتها قابلیت هایی مثل pip، کامپوننت ها، انواع کتابخانه های NET. و سایر ویژگی های برجسته پاورشل در زمینه برنامه نویسی از الزامات مدیریت موثرتر و پیشرفته تر سیستم ها هستند.
پشتیبانی از برنامه ها
خط فرمان از فایل های اجرایی بومی و برخی از ابزارهای شخص ثالث پشتیبانی می کند و می توان آنها را با CMD اجرا کرد ولی وجود محدودیت هایی مثل خروجی مبتنی بر متن، تعامل کم با دستورات و برنامه و قابلیت های اسکریپت باعث کاهش درجه این پشتیبانی می شود.
اما پاورشل از لیست گسترده از برنامه های بومی و شخص ثالث پشتیبانی می کند که ترکیب این ویژگی با ویژگی هایی مثل پایپ کردن دستورات، خروجی مبتنی بر شی و … این امکان را به توسعه دهندگان می دهد که بتوانند cmdlet های سفارشی ایجاد کنند تا مدیران هم با استفاده از آنها بتوانند اسکریپت ها را مطابق نیازهای خود تنظیم کنند.
بیایید تفاوت بین پاورشل و cmd را در یک جدول خلاصه کنیم:
ویژگی | CMD | powershell |
سال انتشار | ۱۹۸۷ | ۲۰۰۶ |
سازگاری با پلتفرم ها | ویندوز | ویندوز، لینوکس و مک |
سطح زبان | ساده | پیچیده |
فرمت خروجی | متن | شی |
قابلیت ریدایرکت خروجی | پایه | قابلیت های پیشرفته مثل pip |
اسکریپت نویسی | اسکریپت نویسی batch | اسکریپت نویسی مبتنی بر net. |
دسترسی به کتابخانه ها | عدم دسترسی | دسترسی کامل به کتابخانه های net. |
امکان اجرای دستورات به طور همزمان | محدودیت اجرای یک دستور در زمان | امکان اجرای همزمان دستورات متوالی موجود در یک اسکریپت |
پشتیبانی از محیط توسعه | فقط رابط خط فرمان | برخورداری از ISE و پشتیبانی از vscode |
وضعیت ادغام با WMI | محدود | ادغام کامل |
قابلیت دسترسی به سرویس های ابری مایکروسافت | عدم دسترسی | امکان تعامل با سرویس های مایکروسافت |
پشتیبانی از aliasing | عدم پشتیبانی | امکان ایجاد alias برای cmdlet ها و اسکریپت ها |
پشتیبانی از برنامه ها | محدود | گسترده |
فرمت فایل اسکریپت | ps1. | bat. و cmd. |
حالا که با تمام تفاوت های این دو ابزار آشنا شدید، وقت انتخاب است.
چه زمانی از CMD استفاده کنیم؟
اگر در زمینه استفاده از دستورات برای تعامل با سیستم عامل مبتدی هستید و دوست دارید به نتایج فوری برسید، CMD گزینه مناسبی برای شماست.
این ابزار از حافظه و cpu کمتری استفاده می کند و باعث عملکرد سریع سیستم در اجرای تسک های مدیریتی ساده و ابتدایی می شود.
در صورت عدم نیاز به اجرای دستورات پیچیده و اسکریپت های پیشرفته می توانید با همان cmd که احتمالاً برای شما آشنا تر و راحت تر است و در اکثر مواقع هم منابع آموزشی بیشتری برای یادگیری تسک موردنظر دارد، ادامه دهید.
چه زمانی از پاورشل استفاده کنیم؟
اگر می خواهید مدیریت سیستم را در یک سطح پیشرفته جلو ببرید و محدودیتی در زمینه استفاده از قابلیت های مدرن نداشته باشید، حتماً باید پاورشل را انتخاب کنید.
با این که منحنی یادگیری کار با پاورشل شیب دار است و نیاز به زمان دارد ولی اگر می خواهید کارهای روتین خود را با استفاده از اسکریپت های سفارشی خودکارسازی کنید و از سایر امکانات قدرتمند پاورشل برای ارتقا کیفیت و عملکرد کارهای مدیریتی خود استفاده کنید، بهتر است موقع آشنایی با نحوه استفاده از پاورشل تسلیم نشوید.
به طور خلاصه، این را بدانید که قرار نیست تک بعدی باشید و یک ابزار را انتخاب کنید و تا ابد با آن ادامه دهید.
بعضی مواقع، واقعا نیاز نیست که خود را با پیچیدگی پاورشل درگیر کنید چون کاری که می خواهید انجام دهید با دستور ساده cmd هم قابل انجام است. پس موقع انتخاب ابزار مبتنی بر خط فرمان، شرایط را در نظر بگیرید و ببینید که کار شما به قابلیت های پیشرفته پاورشل نیاز دارد یا نه.
این را فراموش نکنید که این دو ابزار از یک خانواده هستند و هر کدام در یک حوزه فعالیت می کنند. فقط چون پاورشل عضو جدید خانواده است، از قابلیت های مدرن تر و پیشرفته تری پشتیبانی می کند که می تواند کارهای پیچیده را برای شما ساده تر کند.
سخن آخر
cmd و پاورشل هر دو از ابزارهای مدیریت سیستم با خط فرمان هستند و با اینکه کاربرد تقریباً مشابهی دارند ولی تفاوت های برجسته ای دارند که ممکن است انتخاب را برایتان سخت کند. اگر می خواهید کارهای روتین خود را سریع تر انجام دهید و نیازی به قابلیت های پیشرفته ندارید، از cmd استفاده کنید. اگر می خواهید مدیریت سیستم را با قابلیت های پیشرفته اسکریپت نویسی و برنامه نویسی جلو ببرید و خودکارسازی تسک ها برایتان مهم است، از پاورشل استفاده کنید.