Чим відрізняється CMD від Powershell?


Відповідь 1:

На перший погляд PowerShell досить схожий на cmd. Вони обидва використовуються для запуску зовнішніх програм, таких як ping або копіювання, і дають вам можливість автоматизувати завдання, написавши сценарій / пакетний файл.

Але PowerShell - це набагато більше, ніж це.

Перш за все, він пропонує дуже багатий набір команд (calls cmdlets), які глибоко інтегруються з windows та більшістю продуктів Microsoft. Команди на зразок Get-Process, в яких перераховані активні процеси.

Ще одна велика відмінність полягає в тому, що результатом цієї команди є не просто текст, це колекція об'єктів. Це набагато перевершує виведення просто тексту, оскільки ви можете легко запитати будь-які властивості об’єкта, як-от його ім’я або витрата пам’яті. У cmd вам доведеться проаналізувати вихід.

Ще одна чудова річ щодо PowerShell - це її інтеграція з .NET. Ви можете легко використовувати всі класи, визначені в .NET, щоб запрограмувати будь-які командлети функціоналу.

Ви також можете з легкістю інтегрувати час виконання поглинання в додатки .NET і безпосередньо використовувати споживачі Output PowerShell.

Загалом, PowerShell працює на стероїдах, що дозволяє вам легше автоматизувати та керувати Windows.


Відповідь 2:

Проста відповідь полягає в тому, що PowerShell орієнтована на об'єкт, а cmd.exe - на основі рядків. Але це замислюється над тим, "чому це не просто інше, а КРАЩЕ?", Що є основним питанням.

PSH може створювати .NET-об’єкти на оболонці і дозволяти користувачеві взаємодіяти з ними.

Я можу в інтерактивному режимі відкрити XML-файл, переглядати його, використовуючи DOM (ParentNode.ChildNode.ChildNode.Attribute), використовуючи XPath (SelectSingleNode ("// хост") або методи класу [XML] (GetParentNode ()), редагувати його за допомогою $ xml.CreateElement () / $ node.AppendChild (), збережіть його та запустіть у Visual Studio.

Як правило, мені доведеться написати програму, щоб це зробити, скомпілювати, запустити, (зачекати, поки вона вибухне), а потім відкрити файл вручну в VS.

Я можу написати сценарій, щоб запустити новий Internet Explorer, запропонувати йому перейти до URL-адреси, а потім почати заповнювати поля у формах та розширювати динамічний вміст (з великими труднощами) за допомогою автоматизації COM. Або зробіть те ж саме в Excel - візьміть файл CSV, скиньте його в Excel, переформатуйте (цей стиль таблиці, додайте ці формули, та ширина стовпця) і збережіть його.

Я можу змінити розмір вікна консолі. Або змінити назву. Або збільшити буфер (дійсно? Тільки 300 рядків за замовчуванням?) Або скопіюйте вміст буфера, доповнений кольорами.


Відповідь 3:

CMD - це старша "оболонка" або "пакетна" мова, яка повертається в деякій формі (command.com) до оригінальної операційної системи DOS.

PowerShell - це нова і вдосконалена мова оболонки та мови програмування, вперше доступна як доповнення, а тепер включена (і тепер увімкнена) в операційних системах Windows.

Хоча CMD технічно є "мовою програмування", вона є дуже поганою, де важко визначити змінні загального призначення, призначити ці значення та використовувати сучасні структури управління.

Наприклад, CMD включає в себе "if / then / else", виклик (мітка підстановки або пакетний файл) та непарна форма циклу "for" (справді "foreach"), окрім того, що багато в чому залежить від "goto", тоді як PowerShell має відмінний потік керуючих структур.

PowerShell був розроблений для того, щоб вимкнути ЕФЕКТИВНИЙ набір функціональних можливостей CMD, який він близький до виконання безпосередньо І він може викликати CMD за все, що безпосередньо недоступне.

PowerShell підтримує не тільки виклик CMD як «зовнішньої програми», але й виклик будь-якої іншої попередньої або нової програми як зовнішнє розширення до її власного функціоналу.

PowerShell має прямий доступ до майже всіх DOTNET та легкий доступ до COM та навіть C #, F # та інших мов DOTNET.

PowerShell передає та повертає OBJECTS (структуровані дані з методами, подіями та властивостями) іншим командам та повертає ці об'єкти з більшості команд, а CMD виробляє лише текст.

Ця ідея "об'єктів" є надзвичайно важливою, оскільки знімає необхідність "розбирати" результати на основі положення рядка або символів на рядках - - замість них просто запитуються об'єкти щодо наявних властивостей.

PowerShell також тепер включає ЛІТЕРАЛЬНІ тисячі функцій, командлетів та інших функціональних можливостей і дуже розширюється.

Регулярні вирази PowerShells порівнянні з виразами в Perl або, можливо, більш потужні здатні. Однією з головних речей щодо регулярних виразів в Perl є те, що вони, крім того, що вони є дуже обширними, є НАТУРАЛЬНОЮ частиною мови - PowerShell наближається до ідеалу інтеграції, встановленого Perl для регулярних виразів.

PowerShell включає в себе широке та чудове поводження з помилками.

PowerShell включає широку, розширювану та чудову довідку.

Основні недоліки PowerShell такі:

  • Не доступно за замовчуванням у всіх версіях WIndows, які все ще широко використовуються (Win2003 / XPNot увімкнено, навіть якщо вони наявні до останніх версій Windows - Win2012 та Windows 8.