تفاوت CMD و Powershell در چیست؟


پاسخ 1:

در نگاه اول ، PowerShell cmd تقریباً مشابه است. هر دوی آنها برای اجرای برنامه های خارجی مانند پینگ یا کپی استفاده می شوند و با نوشتن یک فایل اسکریپت / دسته ای ، امکان خودکار سازی کارها را به شما می دهند.

با این حال ، PowerShell بسیار بیشتر است.

اول ، این دستورات متنوعی (به نام cmdlets) را ارائه می دهد که می توانند عمیقاً در ویندوز و بیشتر محصولات مایکروسافت ادغام شوند. cmdlet هایی مانند Get-Process که فرآیندهای فعال را لیست می کنند.

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

نکته مهم دیگر در مورد PowerShell ادغام با .NET است. شما به راحتی می توانید از هر کلاس تعریف شده در .NET برای برنامه ریزی cmdlets عملکردی که وجود ندارد استفاده کنید.

همچنین می توانید به راحتی زمان اجرا Powershell را در برنامه های دات نت ادغام کنید و مستقیماً از اشیاء خروجی PowerShell استفاده کنید.

در کل ، PowerShell به سمت استروئیدها تنظیم شده است که خودکار و مدیریت ویندوز را برای شما راحت تر می کند.


پاسخ 2:

پاسخ ساده این است که PowerShell از نوع شیء است و cmd.exe مبتنی بر رشته ها است. اما این مسئله برگرفته از "چرا نه تنها متفاوت است ، بلکه بهتر است" ، که زیر سوال است.

PSH می تواند اشیاء دات نت را در پوسته ایجاد کرده و به کاربر اجازه دهد با آنها تعامل برقرار کند.

من می توانم با استفاده از DOM (ParentNode.ChildNode.ChildNode.Attribute) ، XPath (XP) (SelectSingleNode ("// میزبان") یا [XML] کلاس کلاس (XML) را ذخیره کنید و آنرا با یک نسخه XML باز کنید ، ویرایش کنید. xml.CreateElement () / $ node.AppendChild () و آن را در ویژوال استودیو راه اندازی کنید. تعاملی.

معمولاً مجبور هستم برای انجام این کار ، برنامه ای بنویسم ، آن را کامپایل کنم ، اجرا کنم (منتظر بمباران باشم) و سپس پرونده را به صورت دستی در VS باز کنم.

می توانم یک اسکریپت بنویسم تا یک اینترنت اکسپلورر جدید را راه اندازی کنم ، آن را به یک URL بپیوندم ، سپس قسمت های مربوط به فرم ها را پر کرده و با استفاده از اتوماسیون COM محتوای پویا (با دشواری زیاد) گسترش دهم. یا همین کار را در اکسل انجام دهید - یک پرونده CSV بگیرید ، آن را در اکسل ذخیره کنید ، آن را اصلاح کنید (این سبک جدول ، این فرمول ها را اضافه کنید ، این عرض ستون) و آن را ذخیره کنید.

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


پاسخ 3:

CMD زبان "قدیمی" یا "دسته ای" قدیمی است که به نوعی (command.com) به سیستم عامل اصلی DOS برمی گردد.

PowerShell یک پوسته و زبان برنامه نویسی جدید و قابل توجه بهبود یافته است که برای اولین بار به عنوان یک افزونه در دسترس قرار گرفت و اکنون در سیستم عامل های ویندوز گنجانده شده است (و اکنون فعال شده است).

در حالی که CMD از نظر فنی یک "زبان برنامه نویسی" است ، بسیار بد است ، در آنجا که تعریف متغیرهای هدف کلی ، اختصاص این مقادیر و استفاده از ساختارهای کنترل مدرن دشوار است.

به عنوان مثال ، CMD شامل "if / then / other" ، تماس (برچسب subrouting یا پرونده دسته ای) و یک شکل عجیب و غریب از حلقه "for" (واقعاً یک حلقه "foreach") است ، اما تا حد زیادی از "goto" در طول PowerShell دارای یک جریان عالی از ساختارهای کنترل است.

PowerShell برای غیرفعال کردن یک زیر مجموعه مؤثر از توابع CMD که تقریباً به طور مستقیم قابل اجرا است ، طراحی شده است ، و می تواند برای هر چیزی که به طور مستقیم در دسترس نباشد ، CMD را صدا کند.

PowerShell نه تنها از فراخوانی CMD به عنوان "برنامه خارجی" پشتیبانی می کند ، بلکه از سایر برنامه های موجود یا جدید نیز به عنوان یک برنامه افزودنی خارجی از عملکردهای خودش استفاده می کند.

PowerShell تقریباً به تمام DOTNET و دسترسی آسان به COM و حتی زبانهای C # ، F # و سایر زبانهای DOTNET دسترسی مستقیم دارد.

PowerShell OBJECTS (داده های ساختاری با متدها ، رویدادها و ویژگی ها) را به سایر دستورات منتقل می کند و همچنین این اشیاء را از اکثر دستورات باز می گرداند ، در حالی که CMD فقط متن تولید می کند.

این ایده از "اشیاء" بسیار مهم است زیرا نتایج دیگر نیازی به "تجزیه و تحلیل" بر اساس موقعیت خط یا شخصیت های خطوط ندارند. در عوض ، فقط برای اشیاء موجود در مورد ویژگیهای موجود استعلام می شود.

اکنون PowerShell شامل توابع LITERAL THOUSAND ، cmdlet و سایر توابع است و بسیار گسترده است.

عبارات منظم PowerShells با عبارت Perl قابل مقایسه یا احتمالاً قدرتمندتر است. یكی از مهمترین موارد در مورد عبارات منظم در Perl این است كه آنها نه تنها بسیار بزرگ هستند ، بلكه یك قسمت طبیعی از زبان نیز هستند - PowerShell به این ایده آل یكپارچه سازی شده توسط Perl برای بیان های منظم نزدیک است.

PowerShell ارائه خطای جامع و عالی را ارائه می دهد.

PowerShell شامل کمک جامع ، گسترده و عالی است.

کاستی های اصلی PowerShell موارد زیر است:

  • به طور پیش فرض برای همه نسخه های ویندوز که اغلب استفاده می شود در دسترس نیست (Win2003 / XPNot همچنین در صورت فعال بودن آنها تا آخرین نسخه های Windows - Win2012 و Windows 8 فعال می شود).