CMD و Powershell چه تفاوت هایی دارند ، کدام بهتر است و چرا در دو محیط جدا توسعه داده میشوند؟

امروز میخواهیم ببینیم خط فرمان یا CMD با خط فرمان آبی یا Powershell چه تفاوت هایی دارند.
نکته اینه هر دو یکی هستند فقط پاورشل انتخابات بیشتری را در اختیارتون میگذاره اما سی ام دی فوق العاده دستورات مهم تر و سیستمی تری داره.
ابتدا بیایید ببینیم مایکروسافت چه میگوید؟
مایکروسافت میگوید:

ویندوز دو خط فرمان دارد یکی سی ام دی و یکی پاورشل در سی ام دی هر آنچه از یک خط فرمان انتظار دارید وجود دارد اما پاورشل یک پوسته نرم افزاری است که ارتباط مستقیم بین شما و سیستم عامل برقرار میکند

همچنین PowerShell برای گسترش قابلیت های سی ام دی برای اجرای دستورات PowerShell به نام cmdlet طراحی شده است. Cmdlet ها شبیه به دستورات ویندوز هستند اما زبان برنامه نویسی قابل گسترش تری را ارائه می دهند. شما می توانید دستورات ویندوز و cmdlet های PowerShell را در Powershell اجرا کنید، اما سی ام دی فقط می تواند دستورات ویندوز را اجرا کند و cmdlet های PowerShell را اجرا نمی کند.

دو نکته مهم از این نقل قول مایکروسافت میتوان برداشت کرد یکی اینکه پاورشل برای اینکه دستورات سی ام دی به علاوه دستورات جدیدتری را با رابط ساده تر در عین حال پیشرفته تر بتوانید اجرا کنید توسعه داده شده نکته دیگر این است که پاورشل زبان برنامه نویسی قابل گسترش به حساب می آید و سی ام دی فقط شبیه سازی از محیط DOS در ویندوز است.
در سی ام دی شما فقط دستوری از پیش تایین شده را وارد میکنید و عملیات انجام میشود و این بسیار محدود است در حالی که در پاورشل شما خود دستور خودتان را میتوانید تعریف و به پاورشل اضافه کنید و یک زبان برنامه نویسی سطح متوسط کامل است.

اما چرا پاورشل از سی ام دی قوی تر است؟

خب هر دو در نگاه اول یک خط فرمان هستند و جنبه های مختلف سیستم عامل مانند تنظیمات و فایل ها را کنترل میکنند اما پاورشل میتواند بسیار عمیق تر این کار ها را انجام دهد برای مثال شما در سی ام دی باید از رجیستری کمک بگیرید تا بک گراند ویندوز را به صورت غیر حرفه ای تغییر دهید در حالی که پاورشل میتواند به اپلیکیشن تنظیمات یا کنترل پنل مراجعه کند و این تنظیمات را کاملا حرفه ای و دقیقا با تمام امکانات و قابلیت ها تغییر دهد.

همانطور که در بخش قبلی نوشته شده بود سی ام دی فقط میراثی از سیستم عامل قدیمی MSDOS است ولی پاورشل اساسا چیز است که مایکروسافت از ویندوز ۷ تا به حال به عنوان برنامه پیش فرض خط فرمان خود و هسته ای برای اجرای دستورات مختلف توسعه داده.

بنابراین هر تغییری که برنامه های GUI یا دارای گرافیک ویندوز بخواهند انجام بدهند که به کنسول نیاز داشته باشد از پاورشل کمک میگیرند.
در کل بدیهی است که با توجه به زمان پیدایش و سرمایه گذاری پاورشل قوی تر از سی ام دی است.

البته هر دو خط فرمان دستورات پایه مشترکی هم دارند مانند dir یا cd و خیلی دستورات دیگر اما تفاوت در این است پاور شل چیزی به اسم cmdlets دارد که توابع برنامه نویسی پیشرفته تری هستند که توسط مایکروسافت اضافه میشوند و در هسته پاورشل قرار میگیرند همچنین شما میتوانید خود دستورات جدیدی با زبان پاورشل خلق کنید.

سوییچ از سی ام دی به پاورشل منطقی است؟

صد در صد بله ولی در ابتدا ممکن است کمی گیج کننده و ترسناک باشد ولی اینطور نیست و عملا تمام دستورات با قابلیت های پیشرفته تری در پاورشل گذاشته شده اند.
برای پاسخ بهتر به این سوال شاید بهتر باشد ابتدا بخش بعدی را مطالعه کنید.

ساختار دستورات پاورشل چیست؟

شاید کمی گیج کننده باشد ولی پاورشل برخلاف سی ام دی از دستوران اسم – فعل استفاده میکند برای مثال set-location در زبان انگلیسی یعنی مکان را تنظیم کنید که کاملا جمله گونه و منطقی به نظر میرسد.
ولی تعجب نکنید که برای کاربران قدیمی تمام دستورات هنوز هم موجود هستند برای مثال عمل cd در سی ام دی همان عمل set-location در پاورشل است اما پاورشل هنوز هم از دستورات قدیمی پشتیبانی میکند.

دلیل این تشابه و وجود دستورات جدید چیست؟

برای اینکه تقریبا همه دستورات به غیر از cd در غالب برنامه ای با پسوند exe در پوشه سیستمی SYSTEM32 و SYSWOW64 قرار دارند که باعث میشود در پاورشل و سی ام دی دستور کار کند برای مثال برنامه ping.exe همان دستور ping www.irunisenter.com را هم در پاورشل میتواند اجرا کند هم در سی ام دی و تقریبا این در تمام فرمان ها صادق است.

رابطه پاورشل با اینترنت چگونه است؟

پاورشل برخلاف سی ام دی رابطه خوبی با اینترنت دارد برای مثال اگر سیستم شما آسیب دیده باشد و دستور مورد نظر شما حذف شده باشد شما میتوانید از دستور Get استفاده کنید برای مثال دستور netplwiz را توسط ویروسی از دست داده اید ، کافیست بنویسید Get-command neplwiz و دستور از اینترنت بارگیری میشود.
مثال دیگر اینکه اگر شما دستوری را به طور پیش فرض در ویندوز ندارید مانند pip که برای کتابخانه های پایتون است کافیست بنویسید Get-command pip و دستور بارگیری میشود و این تفاوت ارتباط پاورشل و سی ام دی با اینترنت است.

پاورشل رابط هیجان انگیزی برای کاربران لینوکس است. پاورشل در بخش دستورات خود نه تنها دستورات سی ام دی را میداند بلکه بسیاری از دستورات خط فرمان لینوکس یعنی bash را هم میتواند تجزیه و تحلیل کند.

حتی شما میتوانید فانکشن های لینوکس را هم در زبان پاورشل پیدا کنید و یا خودتان با زبان پاورشل فانکشن های لینوکس را بنویسید.

برای مثال در خط فرمان لینوکس دستور LS که معادل همان دستور CD در ویندوز است به همان get-location پاورشل تبدیل میشود و اجرا میشود.
پاورشل اکثر این دستورات لینوکس را میتواند تبدیل و اجرا کند.

پاورشل مانند سی ام دی همه چیز را متن نمیبیند:

سی ام دی خط فرمانی است که یک متن را میگرد و یک متن را به عنوان خروجی تحویل میدهد و اگر شما بخواهید از این متن در جای دیگری استفاده کنید باید آن را کپی و در دستور بعدی پیست کنید ولی در پاورشل همه چیز متن دیده نمیشوند و پاورشل یک زبان شی گرا است و مانند زبان های برنامه نویسی کافیست پاسخ دستور فلان را در دستوری که الان استفاده میکنید فراخوانی کنید و این مزیت دیگری از پاورشل نسبت به سی ام دی است.

بگذارید ساده تر توضیح بدهم ، شما در سی ام دی چیزی شبیه یک کتاب دارید که نه فهرست دارد و نه هیچ چیز فقط یک سری متن که پشت سر هم نوشته شده اند و شما برای پیدا کردن یک چیز باید دقیقا مکان آن را بدانید و یا از اول شروع به خواندن آن متن کنید تا به مکان مورد نظر برسید ولی پاورشل مانند یک صفحه اینترنتی است که همه چیز برچسب و هشتک گذاری شده اند و همه چیز فهرست و طبقه بندی دارد و حتی شما میتوانید در آن بر اساس کلید واژه ها بدون دانستن چیز خاصی از آن صفحه مانند گوگل جستجو کنید و این رابط کاربری پاورشل را کاربر پسند تر از سی ام دی میکند.

اسکریپت های سی ام دی و پاورشل چه تفاوتی با هم دارند؟

خب حالا فرق اسکریپت نویسی در سی ام دی یعنی batch scipt با پسوند bat با اسکریپت نویسی در پاورشل یعنی ps script با پسوند ps1 چیست ؟
خب با توجه به توضیحات قبلی بچ اسکریپت سی ام دی بسیار ضعیف تر از پاورشل که عملا به خودی خود یک زبان برنامه نویسی است عمل میکند و دستورات فوق العاده محدودی دارد چرا که خود پاورشل هم دستورات بیشتری دارد هم میتوانید خودتان دستور خلق کنید.

برای مثال همه ما میدانیم که در زبان های برنامه نویسی از جمله پاورشل میتوان از دستورات تو در تو مانند چند if و else در هم دیگر استفاده کرد اما در سی ام دی تنها میتوان یک دستور را اجرا کرد بنابراین زبان batch با پسوند bat را نمیتوان زبان برنامه نویسی یا اصلا اسکریپت نویس خوبی خواند اما پاورشل بسیار کامل تر و شبیه تر به زبان های برنامه نویسی است.

همچنین پاورشل مانند هر زبان سطح بالا دیگری از دستورات به اصطلاح اسپاگتی مثل goto استفاده نمیکند که واقعا این را بیشتر شبیه به یک زبان برنامه نویسی سطح بالا میکند تا یک زبان اسکریپت نویسی ساده مانند سی ام دی که واقعا نا کامل است.
نتیجه چیست بالاخره پاورشل بهتر است یا سی ام دی؟

اگر به دقت توضیحات داده شده را خوانده باشید قطعا نتیجه گیری کرده اید که پاورشل چقدر کامل تر و بهتر از سی ام دی است که هم برای کاربران حرفه ای بهینه تر است و هم برای کاربران عادی ساده تر و روان تر.

در این مقاله تقریبا جنبه های کامل و مختلفی را در بین پاورشل و سی ام دی بررسی کردیم که تقریبا در همه جنبه ها پاورشل قوی تر عمل میکند تا سی ام دی که واقعا دیگر قدیمی شده و حتی مایکروسافت از ۸ سال پیش تا به حال آنرا توسعه نداده است.

با این تفاصیر به نظر شما پاورشل و اسکریپت هایش بیشتر کارآمد است یا سی ام دی و بچ اسکریپت ها؟


نویسنده: محمد امامی

6 Comments
  1. LORD__SBH
    LORD__SBH کاربر می‌گوید

    ادمین رسما از وقتی مقاله رو خدمتتون فرستادم شیش تا مقاله دیگه رو تایید کردید اما برای من رو نخوندید
    برم گریه کنم ):

    1. admin
      admin کاربر می‌گوید

      ای وای رایت میگیا.
      معذرت.
      فردا حتما برای شما.

    2. محمد امامی کاربر می‌گوید

      ادمین کلا انگار وقتش خیلی پره😐

      1. LORD__SBH
        LORD__SBH کاربر می‌گوید

        بله اخه یه مشکل خیلی مهمی براشون پیش اومده ………….

  2. بردیا کاربر می‌گوید

    بسیار ممنون
    سید
    قصه نخور.

    1. کاربر می‌گوید

      غصه”
      میگم بردیا جان معلم دیکته برات بگیرم؟

دیدگاه ها غیر فعال است.