PowerShell ПРОТИВ CMD – В чем разница
WINDOWS / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

PowerShell ПРОТИВ CMD – В чем разница

Командная строка - это традиционная оболочка командной строки в Windows. Она предоставляет способ прямого взаимодействия с приложением или операционной системой через CLI, автоматизации операций с пакетными файлами (.bat) и запуска сценариев.

PowerShell, который в настоящее время является оболочкой командной строки по умолчанию, расширяется на них и обеспечивает еще более надежные возможности автоматизации. Это сам по себе язык сценариев с собственным ISE и поддержкой команд cmd и bash.

Поскольку они оба служат схожим целям, вы можете задаться вопросом, действительно ли они так сильно отличаются? Является ли CMD просто более простой версией PowerShell? Собирается ли PowerShell заменить командную строку в будущем? Мы ответили на эти и подобные запросы в статье ниже.

Что такое командная строка?

Во времена MS-DOS пользователям для управления компьютерами приходилось вводить команды исключительно через интерфейс командной строки (CLI). Со временем и инновациями MS-DOS была заменена операционными системами на основе графического интерфейса пользователя. Но одна часть CLI застряла в виде командной строки, которая была впервые выпущена в 1987 году.

 

Командная строка, также называемая CMD, является интерпретатором командной строки в линейке операционных систем Windows NT. Она взаимодействует с пользователем через CLI, который реализован через консоль Win32.

CMD принимает входные данные пользователя (команды) и переводит (интерпретирует) их в форму, понятную компьютеру (машинный язык). Команды CMD предварительно заданы, и каждая выполняет определенную задачу.

Эти команды можно использовать как для простых целей (например, проверки вашего ping или IP-адреса), так и для сложных задач, таких как создание пакетных файлов и сценариев для автоматизации задач системного администрирования (установка программного обеспечения, резервное копирование серверов или выход пользователей из системы на ПК в большой сети, например).

Выполнение задач с помощью CMD, как правило, быстрее и эффективнее, чем с графическим интерфейсом, особенно тех, которые могут быть выполнены путем запуска пакетов команд. Поскольку ваши команды и скрипты хранятся в текстовом файле, ваши команды можно не только повторять, но и проверять, что является еще одним большим преимуществом.

Доступ к командной строке можно получить с помощью команды run cmd.

Что такое PowerShell?

PowerShell - это кроссплатформенная оболочка командной строки, язык сценариев и платформа автоматизации в одном флаконе. PowerShell, построенный на новой платформе .NET Core framework, традиционно использовался системными администраторами.

В наши дни он становится все более популярным среди DevOps, облачных операторов и разработчиков благодаря таким функциям, как конвейерная цепочка, завершение табуляции / прогнозирование команд, псевдонимы, история командной строки, диски PowerShell, удаленное управление PowerShell и многое другое.

 

PowerShell обычно используется для задач автоматического управления системой и администрирования, управления облаком, создания, тестирования и развертывания решений в средах CI / CD и так далее. Он может работать с такими технологиями, как Azure, SQL, Exchange, AWS, Google Cloud, VMware и другими.

PowerShell использует уникальные облегченные команды, известные как командлеты (произносится command-lets). В дополнение к собственным командлетам, PowerShell также поддерживает команды CMD и Bash в виде псевдонимов. О, и вы также можете создавать свои собственные командлеты, модули и функции.

Как оболочка командной строки по умолчанию, к PowerShell можно получить доступ из меню опытного пользователя (Windows + X). Конечно, команда выполнить powershell также отлично работает.

PowerShell ПРОТИВ CMD – Основные отличия

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

Команды

Командлеты PowerShell отличаются от команд CMD в том смысле, что они являются экземплярами классов .NET, а не автономными исполняемыми файлами.

PowerShell поддерживает создание новых и пользовательских командлетов, которые могут быть созданы из нескольких строк кода, в то время как CMD этого не делает.

PowerShell также поддерживает команды CMD и команды Bash в виде псевдонимов, тогда как то же самое нельзя сказать о командной строке.

Кроме того, в PowerShell также есть собственные командлеты для работы с инструментарием управления Windows (WMI) как на локальных, так и на удаленных компьютерах, в то время как в CMD их нет.

Структура языка

В CMD есть множество простых пакетных команд, напоминающих MS-DOS, таких как cd или dir. Их может быть трудно понять / запомнить, если у вас нет большого опыта работы с ними.

С другой стороны, командлеты PowerShell намного проще в изучении и интерпретации из-за структуры языка. Командлеты PowerShell обычно соответствуют формату глагол-существительное или иногда формату глагол-модуль-существительное.

 

Глагол указывает, какой тип действия вы пытаетесь выполнить. Обычно используемые глаголы включают Get (получение сведений о чем-либо), Set (изменение состояния или настроек чего-либо), New (создание нового элемента) и Remove (удаление существующего элемента). Вы можете получить полный список всех возможных глаголов с помощью Get-Verb командлета.

Module указывает, какой модуль содержит команду, в то время как Noun указывает, над каким типом элемента вы работаете.

С таким согласованным форматом, как этот, можно сделать обоснованное предположение во многих ситуациях, что значительно упрощает процесс обучения, чем с командной строкой.

Каналы, объекты и переменные

Конвейер используется для последовательного выполнения нескольких команд, где выходные данные одной команды напрямую используются в качестве входных данных для следующей команды. Концепция конвейера характерна не только для PowerShell.

Уникальность заключается в том, что в PowerShell объекты используются для извлечения и возврата данных, тогда как в командной строке входные и выходные данные представляют собой просто строки. Это делает PowerShell более эффективным и способным обрабатывать сложные данные так же, как это делают языки программирования, на что не способен CMD.

В CMD вы должны передавать переменные в команды в строгом порядке, поскольку количество переменных ограничено. В PowerShell таких ограничений нет.

Справочная система

В PowerShell Get-Help и Get-Command обычно используются для понимания команд и получения дополнительной информации. Справочная система в PowerShell также интегрирована со справочными статьями в Интернете.

Использование Get-Help дает вам информацию о том, как использовать этот командлет. Если вы используете get-help ip, вы получаете список всех функций, командлетов и псевдонимов, связанных с IP. Если вы используете get-help set-netipaddress, он отображает информацию только об этой конкретной функции.

 

Аналогично, при использовании Get-Command отображается обширный список всех команд, установленных на компьютере. Вы можете изменить его с помощью различных параметров, таких как, Get-Command -Type Cmdlet например.

В случае с CMD команда help отображает список доступных системных команд. Например, при вводе help dir вместо этого отображается подробная информация о команде dir. Но это работает не со всеми командами, и в этом случае вы можете вместо этого использовать /? поскольку это служит той же цели. Например, ping /? отображает информацию о команде ping.

 

Среда и скрипты

Командная строка очень ограничена в том смысле, что вы можете выполнять только базовые команды DOS, которые не имеют доступа ко многим функциям управления системой.

В CMD вам нужно было бы написать скрипт в блокноте, сохранить его как пакетный файл и запустить отдельно, тогда как это можно вызвать непосредственно в PowerShell. Обратите внимание, что CMD-скрипты сохраняются в виде .bat файлов, тогда как PowerShell-скрипты сохраняются в виде .ps1 файлов.

В CMD также нет ISE (интегрированной среды сценариев), что означает, что она просто не может соответствовать возможностям PowerShell по созданию сложных сценариев.

PowerShell имеет доступ глубоко в систему Windows и может взаимодействовать с системными объектами на уровне ядра. Кроме того, ISE в PowerShell позволяет писать, запускать, тестировать и отлаживать команды, псевдонимы и сценарии.

Некоторые другие ключевые функции PowerShell ISE включают многострочное редактирование, выборочное выполнение, контекстно-зависимую справку, завершение табуляции, раскраску синтаксиса, поддержку языков справа налево и настройку внешнего вида, среди прочего.

Окончательный вердикт – PowerShell ПРОТИВ CMD

Подводя итог, вот основные различия между PowerShell и CMD:

PowerShell CMD
Powershell использует автономные программные объекты, называемые командлетами, которые соответствуют согласованному формату глагол-существительное. Команды CMD не соответствуют согласованному формату.
Он также поддерживает псевдонимы и создание пользовательских командлетов. CMD не поддерживает псевдонимы или создание новых команд.
Powershell поддерживает команды Bash и, следовательно, системы Linux. CMD не поддерживает системы Linux.
В Powershell вы можете передавать выходные данные в виде объектов. Вывод команды в CMD представляет собой строку, и вы не можете передать ее другой команде.
В Powershell есть ISE. У CMD нет ISE.
Powershell имеет доступ к библиотекам программирования. У CMD нет доступа к библиотекам программирования.

Для обычного пользователя причина, по которой вы используете командную строку большую часть времени, скорее всего, заключается в проверке вашего ping или IP. Командная строка - прекрасный инструмент для этой цели.

Или, возможно, вы опытный пользователь со стажем и пока не хотите расставаться с CMD. CMD не исчезнет в ближайшее время, так что, если он выполняет работу за вас, это тоже нормально.

Но нельзя отрицать, что PowerShell превосходит CMD практически по всем показателям. PowerShell расширяем, подключаем друг к другу и предлагаем гораздо больше функциональности.

Внедрение PowerShell устранило проблему, с которой раньше сталкивались системные администраторы: ручной поиск командлетов в каталогах Windows и навигация по ним для автоматизации задач администрирования, особенно резервного копирования, восстановления, обновления и связанных с обслуживанием cron-заданий.

Командная строка просто не может соответствовать возможностям системного администрирования и автоматизации PowerShell. Это очевидно как для опытных пользователей, так и для системных администраторов, поэтому Microsoft, скорее всего, в конечном итоге попытается заменить cmd на PowerShell. В конце концов, PowerShell может делать большую часть того, что может CMD, и многое другое.

Сравнение самых полезных команд

Большинство пользователей сталкивались с одной или двумя ошибками, из-за которых им приходилось использовать инструменты командной строки для решения проблемы. Использование powershell или cmd поначалу может показаться сложной задачей, но мы надеемся, что приведенная ниже таблица будет полезна в таких случаях. В нем мы собрали некоторые из наиболее полезных командлетов powershell и cmd-команд и кратко описали их функции.

Описание команды Командлет PowerShell Команда CMD
Отображает список элементов и дочерних элементов в указанном расположении Get-ChildItem реж
Получает содержимое элемента Get-Content Тип
Список доступных команд с кратким описанием Get-Command Справка
Отображает подробную информацию об указанной команде Получить-Справка /?
Отображает текущее рабочее местоположение Get-Location cd
Изменяет текущий рабочий путь на указанный Set-Location cd, chdir
Список всех запущенных процессов Get-Process список задач
Останавливает запущенный процесс Остановить процесс убить taskkill
Копирует элементы в другое место Копировать элемент копировать, xcopy
Перемещает элементы в новое местоположение Переместить элемент переместить
Удаляет элемент Удалить-Item удалить, стереть
Переименовывает элемент Rename-Item переименовать, переименовать
Возвращает IP-адрес системы Get-NetIPAddress ipconfig
Перезапускает локальную систему Перезагрузка-Компьютер shutdown/r
Очищает экран Очистить-Host cls
Комментарии (0)
Добавить комментарий