Интерпретатор командной строки (Command Line Interpreter, или CMD) и PowerShell — это приложения, используемые для прямого взаимодействия с операционной системой Windows. На первый взгляд у них много общего, но в этом тексте мы сконцентрируемся на ключевых отличиях командной строки CMD и PowerShell.
Что из себя представляет командная строка Windows?
Интерпретатор командной строки (более распространенное название — командная строка Windows) — это командная оболочка, которая появилась впервые в MS-DOS 1980-х годов. Она позволяла пользователю взаимодействовать с операционной системой (ОС) напрямую.
Так, данная командная оболочка предоставляет среду для запуска приложений и различных утилит — выходные данные отображаются в том же окне. Командную строку можно использовать для создания и редактирования сценариев и сохранения их в пакетных файлах, для решения задач автоматизации в рамках одной системы.
Как открыть командную строку CMD
Прежде чем проводить сравнение Windows PowerShell и CMD, хорошо бы понять, где их найти и как с ними взаимодействовать.
Существует несколько способов открыть интерфейс командной строки. Классический метод — через поисковую строку, введя в ней слова cmd или командная строка.
Для большинства этот способ быстрее и удобнее, но существует и другая возможность получить доступ к cmd.exe:
- Комбинацией клавиш win+r открыть меню выполнения.
- Ввести в открывшееся меню команду cmd.
Также можно вручную открыть cmd.exe из его исходного местоположения: C:\Windows\system32\cmd.exe.
Для взаимодействия с ОС в командной строке нужно ввести команду и ее параметр.
Например, чтобы проверить соединение с удаленным хостом вводим:
ping -r google.com
Где ping — команда, -r — параметр команды, google.com — адрес удаленного хоста.
После этого командная строка выполняет введенную команду и реализует задачу или функцию, для которой она предназначена в Windows.
Команды должны быть введены в Command Prompt без ошибок. Неправильный синтаксис или написание могут привести к сбою команды или, что еще хуже, к выполнению неправильной команды или правильной команды неправильным способом. Если ввести команду без параметров, вы увидите подсказку с возможными параметрами:
Теперь мы можем перейти к PowerShell.
Что такое PowerShell Windows
PowerShell — это более продвинутая версия CMD. Кросс-платформенное решение для автоматизации задач, состоящее из оболочки командной строки, языка сценариев и структуры управления конфигурацией.
Подробнее о PowerShell читайте здесь →
Ключевым отличием от CMD, заметным на старте работы, являются командлеты — упрощенные команды, используемые в среде PowerShell. Назначение команды PowerShell довольно легко интерпретировать по названию: они следуют простой закономерности — за глаголом идет существительное.
Сравним:
- Команда CMD: ping
- Командлет PowerShell: Test-Connection
Командлеты помогают управлять инфраструктурой Windows. Кроме того, они позволяют обычному пользователю получить удаленный доступ к реестру, файловой системе и пространству Windows Management Instrumentation (WMI) на системах.
Как современная командная оболочка PowerShell включает в себя лучшие функции других популярных оболочек. В отличие от большинства оболочек, которые принимают и возвращают только текст, PowerShell принимает и возвращает объекты .NET. Это программная платформа, в которой исполняются программы. Таким образом, нет необходимости разбирать текст для извлечения информации из выходных данных.
Как язык сценариев PowerShell обычно используется для автоматизации управления системами, позволяет создавать сложные сценарии с множеством условий. Он также используется для сборки, тестирования и развертывания решений, часто в средах CI/CD.
Открыть shell, как и командную строку, можно через поисковую строку и через меню выполнения, вписав в обоих случаях PowerShell. Также, в зависимости от версии операционной системы его можно найти в Power User Menu. Открывается оно комбинацией клавиш win+x или нажатием правой кнопки мыши на значок Windows.
Зачем PowerShell обычному пользователю
Разница PowerShell и CMD заключается в их использовании. Последний используется в основном для выполнения пакетных команд, устранения некоторых первичных неполадок. PowerShell, в свою очередь, может использоваться как для выполнения пакетных команд, так и для административных целей.
Важной является возможность создания сценариев (скриптов) — текстовых файлов, содержащих всего одну или целый набор команд PowerShell.
В качестве примера создадим простой выводящий текст сценарий, который состоит из одной команды:
- Создаем файл сценария (с расширением ps1), в котором будут прописаны команды:
2. В окне PowerShell вводим & и путь к необходимому файлу:
Теперь давайте разберем, как выполнять простое взаимодействие с системой при помощи CMD и PowerShell.
Как получить помощь?
Первым делом необходимо узнать, какие команды вообще существуют. Это можно узнать, запросив помощь у самого приложения.
В командной строке Windows используется команда help, чтобы отобразить список доступных команд.
В PowerShell, чтобы выполнить такое же действие используется команда Get-help.
Используйте PowerShell в работе с выделенным сервером
Соберите сервер в конфигураторе под свои задачи. Или выберите из более 100 готовых.
Как изменить каталог?
Для изменения каталога (папки) в командной строке применяется команда Change Directory (cd). Эта команда позволяет перейти в другую папку с компьютера (изменить текущий каталог).
В PowerShell команда cd является псевдонимом для командлета Set-Location-Path <название каталога>, выполняющего идентичную функцию.
Первая итерация команды CD, которую полезно знать, это CD\. Она переводит вас на вершину файловой иерархической структуры (дерева каталогов).
Для перехода в нужную папку с диска, выполните команду CD «название папки». Вложенные папки должны быть разделены символом бэкслэша: \. Например, если необходимо перейти в папку user, находящуюся в C:\users нужно ввести команду cd users\user. Используя команду cd .., можно вернуться на один каталог вверх.
Чтобы изменить диск, нужно ввести его название с двоеточием. Например, d:, чтобы переключиться на диск D. В PowerShell используется командлет set-location d:.
От каталогов перейдем к хранящимся в них файлам.
Как перечислить файлы в каталоге?
Команда dir (Directory) используется, чтобы перечислить файлы в каталоге через командную строку.
Отличие PowerShell – в используемой для перечисления файлов команде. Чтобы перечислить файлы в каталоге, используется команда Get-ChildItem.
Как переименовать файл?
Чтобы переименовать файл в каталоге, в cmd используется команда ren (rename). После нее сначала вводится имя файла, которое вы хотите заменить, затем вводится желаемое имя. Например, ren dir1 dir2.
В Windows PowerShell используется команда Rename-Item для переименования папки путем передачи пути к переименовываемой папке и целевого имени. Например, C:\Windows\dir1 dir2.
Далее разберем важные утилиты, которые могут пригодиться при взаимодействии с системой, а также их отличия в CMD и PowerShell.
Ключевые отличия команд PowerShell от CMD
Завершим знакомство обычного пользователя с PowerShell и CMD сравнением команд и командлетов. Остановимся на нескольких примерах.
- Ping: как мы писали ранее, аналогом cmd-команды ping является командлет Test-Connection в PowerShell.
- Tracert: в PowerShell для определения маршрута следования данных в сети используется Test-NetConnection -TraceRoute.
- IPConfig: Get-NetIPConfiguration в PowerShell – эквивалент IPConfig.
- Nslookup: Команда Resolve-DnsName выполняет DNS-запрос для указанного имени. Эта команда функционально аналогична инструменту nslookup, который позволяет пользователям запрашивать имена.
- Netstat: Get-NetRoute в PowerShell получает текущие TCP-соединения.
- Route: Команда Get-NetRoute является аналогом route и получает информацию о маршруте IP из таблицы маршрутизации IP.
- Netsh: Netsh – служебная программа на базе командной строки, позволяющая показывать или изменять конфигурацию сети активного компьютера. Чтобы запустить ее, и в Windows Powershell, и в CMD используется одна и та же команда — netsh.
- Gpupdate: ее аналогом является команда Invoke-GPUpdate. Она обновляет параметры групповой политики, включая параметры безопасности, установленные на удаленных компьютерах.
- Gpresult: Команда Get-GPResultantSetOfPolicy получает и записывает в файл информацию о результирующих политиках (RSoP) для пользователя.
Разница между командной строкой CMD и Windows PowerShell: что выбрать
Мы завершили обзор, которые условно можно назвать «PowerShell против CMD». Очевидно, есть много причин, по которым Windows PowerShell заменила командную строку Windows по умолчанию в ОС Windows 10. Но, если вы привыкли к CMD, вам не обязательно переходить на PowerShell.
Хотя переход не будет болезненным: в среде PowerShell большинство команд из CMD работают. Все потому, что были созданы псевдонимы командной строки в PowerShell, которые позволяют интерпретировать старые команды cmd как новые команды PowerShell.
Какой инструмент выбрать — ваш выбор. Но PowerShell – более современен. В две основные функции PowerShell встроены дополнительные возможности. И эти возможности, или сценарии использования, являются причиной растущей популярности PowerShell.
Чтобы узнать, как старые команды CMD соотносятся с новыми командами PowerShell, используйте команду Get-Alias.