В чём разница между cmd и PowerShell Windows?
C появлением Windows 7 к возможностям системы добавилась ещё одна программная оболочка для работы чистыми командами, не оформленная в графический интерфейс. С момента появления к ней всё чаще приковывают внимание сами разработчики, а в Windows 10 она вообще предлагается командной консолью по умолчанию. С каждой последующей версией Windows PSH (Пи-Эс-Эйч) обрастает всё большими возможностями. И на фоне развития Windows разница между cmd и PowerShell (Пауэр Шел) становится всё принципиальнее.
почти не отличимы; внешне их можно сделать идентичными
Разница между cmd и PowerShell: не только в цветах.
Основная разница между PowerShell и cmd в том, что последняя — это обновлённая версия «отжившей» в своё время программной оболочки DOS, а в первую, как видно, Windows вдыхает новую жизнь. Очевидно демонстрируя, что от DOS команд разработчики отказываться вообще не собираются. Сравнение с DOS уже неверно, та очень ограничена в своих возможностях; cmd существовала в Windows как «наследие DOS для избранных» или ремонтный, прямой вариант самых необходимых команд. А ввод в работу PowerShell — это как своеобразное предложение, если не покопаться во внутренностях системы, то поучаствовать в изучении её возможностей и способ заняться её модификацией вполне официально: интеграция в среду .Net тому подтверждение.
Разница между cmd и PowerShell: а зачем нужен Shell обычному пользователю?
Знакомство с PowerShell.
Можно выделить несколько первых команд, с помощью которых можно познакомиться с оболочкой в общих чертах (а не просто смотреть на пустую консоль с синюшним фоном).
Справка как она есть. Русифицирована. Информацию о командах получаем отсюда.
Основные командлеты PSH. Сама по себе командлет вам не даст ничего, однако для начала можно было бы ознакомиться с её именем и исполнительным модулем. Например, если нужно увидеть командлеты, работающие с IP функциями или просто сетевые командлеты, мы можем попросить у get-command:
Разница между Windows PowerShell и командной строкой
Если вы использовали операционную систему Windows, вы часто сталкивались с CMD или командной строкой, насколько многие ее знают. Командная строка — это интерпретатор командной строки, который поставляется со всеми версиями Windows, начиная с Windows NT. Командная строка предоставляет интерфейс командной строки, который позволяет пользователю выполнять общие задачи ОС путем написания команд или определения списка команд в сценарии, который можно использовать для повторяющихся задач.
Раньше во всех версиях Windows в качестве интерпретатора командной строки использовалась только командная строка, но это изменилось с выпуском Windows, который поставлялся с Windows PowerShell, расширенной функцией со всеми функциями командной строки и многим другим. А поскольку Windows PowerShell была предпочтительной программой для выполнения пакетных сценариев, предназначенных для автоматизации задач.
Понимание командной строки

Командная строка реализуется через консоль Win32, чтобы использовать собственные функции операционной системы. Как и в случае с графическим интерфейсом пользователя (GUI) с использованием мыши для открытия и запуска приложений, в командной строке есть набор определенных команд для выполнения тех же задач. Команды в командной строке являются типичными методами интерфейса прикладного программирования (API) с базовой реализацией машинного языка, что ускоряет выполнение, чем при использовании графического интерфейса пользователя.
Чтобы выполнить задачу из командной строки, пользователь вручную записывает команду, которая уже определена системой, а затем включает параметры, поддерживаемые синтаксисом команды. Чтобы упростить повторное использование, можно использовать клавиши направления вверх и вниз для навигации по истории уже выполненных команд.
Как получить доступ к командной строке Windows
Командную строку можно открыть через окно запуска, ее расположение в проводнике файлов или меню «Пуск». Однако его открытие из окна «Выполнить» не дает возможности работать с правами администратора, что может быть необходимой привилегией в зависимости от задачи, которую вы должны выполнить.
Понимание Windows PowerShell

Windows PowerShell — это платформа Microsoft, предназначенная для автоматизации основных задач и высокоуровневой настройки компьютера. Windows PowerShell состоит из интерфейса командной строки, а также среды сценариев.
Поскольку Windows PowerShell в основном предназначена для автоматизации задач и управления конфигурацией, она в основном используется системными администраторами и ИТ-специалистами в таких задачах, как настройка большого количества компьютеров, подключенных к сети, которые могут быть локальными или удаленными устройствами, расширенное управление файловой системы, например, реестра
Windows PowerShell отлично использует каналы, которые позволяют использовать выходные данные одного командлета в качестве входных данных для другого командлета, что делает его гибким, позволяя сценариям работать вместе, а также для повторного использования.
С 2016 года, когда Windows PowerShell была сделана с открытым исходным кодом и кроссплатформенной, ее использование во всех операционных системах, включая Linux и macOS, быстро растет. По этой причине многие сторонние поставщики программного обеспечения разработали интеграцию с PowerShell, чтобы упростить работу системных администраторов и ИТ-специалистов.
Как получить доступ к Windows PowerShell
Как и командную строку, Windows PowerShell можно открыть через окно «Выполнить», файловый проводник или из меню «Пуск». В окне «Выполнить» нет возможности запустить Windows PowerShell от имени администратора.
Разница между Windows PowerShell и CMD
Windows PowerShell — это усовершенствование CMD, и хотя новые версии Windows 10 по-прежнему поставляются с обеими программами, PowerShell призван полностью заменить командную строку в будущем. Это потому, что командная строка не может делать ничего такого, чего не может сделать Windows PowerShell.
Пройдя через разделы «Общие сведения о Windows PowerShell» и «Командная строка», я думаю, вы уже заметили различия между ними. Резюмируем:
Windows PowerShell является кросс-платформенным, поэтому его расширенные функции могут использоваться во всех популярных операционных системах, таких как Windows, Linux и macOS, по сравнению с командной строкой, которая есть только в операционных системах Windows.
В Windows PowerShell используются более мощные команды, называемые командлетами, которые выполняют более сложные задачи по сравнению с командами в командной строке.
Windows PowerShell — это не только интерпретатор командной строки, но также состоит из среды сценариев, которая позволяет пользователю писать сложные сценарии для мощных задач по сравнению с командной строкой, которая представляет собой просто интерпретатор командной строки.
Когда следует использовать Windows PowerShell или CMD
К счастью, Windows по-прежнему поставляется как с командной строкой, так и с Windows PowerShell, вы не обязаны использовать ни то, ни другое. Поэтому, если вы редко используете интерфейсы командной строки, это означает, что вам не часто нужны расширенные функции оболочки, тогда базовая CMD идеально подходит для вас. Он будет выполнять стандартные операции, такие как проверка связи, копирование и вставка файлов, открытие приложений и т. Д.
Однако если вы системный администратор, ИТ-специалист или администратор сети, было бы здорово использовать Windows PowerShell, учитывая ее мощные функции и возможности, которые вы можете выполнить. Не говоря уже о том, что использование Windows PowerShell становится все более востребованным навыком для ИТ-специалистов.
Командная строка и PowerShell: в чем разница?
Будучи пользователем Windows, вам не нужно иметь дело с интерфейсом командной строки для повседневной деятельности. При этом для любых сложных задач командная строка обеспечивает большую гибкость и контроль над задачей. Фактически, это единственная причина, по которой в Windows есть и командная строка, и PowerShell. Поскольку оба являются интерфейсами командной строки, PowerShell и командная строка на первый взгляд могут выглядеть одинаково. Но между ними есть существенные различия. Давайте узнаем, что на самом деле означают PowerShell и командная строка и чем PowerShell отличается от командной строки.
Что такое командная строка
Что такое PowerShell
Чем PowerShell отличается от командной строки
PowerShell намного более продвинутый с точки зрения функций, возможностей и внутренней работы по сравнению с устаревшей командной строкой. Фактически, PowerShell может открыть почти каждый внутренний модуль Windows, что делает его полезным инструментом для ИТ-специалистов, системных администраторов и опытных пользователей.
Когда я говорю PowerShell, большинство из вас может подумать о стандартном интерфейсе командной строки, но Windows также поставляется с PowerShell ISE (интегрированная среда сценариев), которая помогает создавать настраиваемые и сложные сценарии PowerShell для всех видов работ.
Поскольку PowerShell рассматривает их как объекты, выходные данные можно передавать как входные данные другим cmdlets через конвейер. Это позволяет вам манипулировать данными сколько угодно, не прибегая к помощи сложных выражений Reg. Это просто невозможно в командной строке.
Когда вы сравните все это с устаревшей командной строкой, вы обнаружите, что она сильно уступает PowerShell как по функциональности, так и по тому, сколько вы можете с ней сделать.
Но за всю мощь PowerShell приходится платить; это кривая обучения. Если вы не возражаете против крутой кривой обучения, попробуйте PowerShell. Конечно, если вы входите в сферу системного администрирования, вам обязательно нужно изучить PowerShell, чтобы облегчить себе жизнь.
Если вы обычный пользователь Windows, который почти не пользуется командной строкой, то от PowerShell вы, возможно, не многого добьетесь.
Что вы предпочитаете: командную строку или PowerShell? В комментариях ниже поделитесь своими мыслями и опытом использования PowerShell и командной строки.
Сравнение Windows PowerShell и командной строки »WebNots
Начиная с Windows 7 и заканчивая Windows 10, Microsoft предоставляла опции командной строки Windows и Windows PowerShell. Это два интерфейса командной строки, которые помогают пользователям напрямую взаимодействовать с операционной системой. Вы можете использовать большинство команд DOS в интерфейсе командной строки.
Связанный: 10 команд командной строки Windows, которые вы должны знать.
Windows PowerShell против командной строки
Наличие этих двух командных оболочек может сбивать с толку большинство пользователей Windows. Интересно, что PowerShell и командная строка имеют схожий вид, и большинство их команд одинаковы. Цель этой статьи — провести четкую грань между двумя инструментами, а также обсудить, что преобладает над другим.

Что такое командная строка Windows?
Командная строка Windows (или сокращенно cmd) — это командная оболочка, основанная на операционной системе MS-DOS 1980 года. Он присутствует в ОС Microsoft, начиная с Windows NT. Это просто приложение Win32, которое помогает пользователям взаимодействовать с операционной системой с помощью текстовых инструкций (команд) и параметров.
Пользователи полагаются на возможности CMD для взаимодействия со всеми другими объектами и приложениями Win32. Это помогает выполнять различные задачи в Windows, например:
Хотя интерфейс командной строки широко используется для выполнения вышеуказанных и других задач, он имеет определенные ограничения.
Что такое Windows PowerShell?
Он использует текстовые команды, известные как командлеты и язык программирования C #, помогая пользователю более эффективно управлять инфраструктурой Windows. Проще говоря, PowerShell сочетает в себе функциональность командной строки с мощной средой сценариев для упрощения администрирования системы.

Помимо выполнения задач, аналогичных командной строке, PowerShell позволяет пользователям и системным администраторам выполнять следующие действия.
Доступ к командной строке и Windows PowerShell
Вы можете получить доступ к командной строке следующими способами:
Используйте один из следующих вариантов, чтобы открыть Windows PowerShell.
Если щелкнуть правой кнопкой мыши кнопку «Пуск» или нажать клавиши «Win + X», Windows покажет либо командную строку, либо параметры, связанные с Windows PowerShell. Вы можете изменить настройки, чтобы выбрать, какой вариант вы хотите отображать в меню.
Сравнение PowerShell и командной строки
Хотя вы можете выполнять большинство функций командной строки в Windows PowerShell, они не совпадают. Вот некоторые различия между двумя интерфейсами.
Связанный: Что такое драйверы в Windows и как устранить проблемы с драйверами?
Кроме того, PowerShell предоставляет другие расширенные функции, включая:
PowerShell или командная строка, что делать дальше?
Если вы полагаетесь только на Cmd для выполнения основных команд, таких как ПФС, IPCONFIG и тому подобное, это по-прежнему удобный инструмент. Для системных администраторов и опытных пользователей, которым необходимо выполнять сложные задачи или управлять удаленными системами, PowerShell — лучший выбор. Это экономит время системных администраторов, обеспечивая доступ к более глубокой автоматизации системных задач. Тем не менее, пользователям Windows рекомендуется начать знакомство с последним, особенно после того, как Microsoft сделала оболочку по умолчанию для Windows 10. Кроме того, PowerShell превосходит старый Cmd, поскольку он предоставляет все возможности Cmd и многое другое.
Для примера я взял наиболее распространенные утилиты командной строки, применяемые в администрировании, и попробовал подобрать им замену в PowerShell. Вот что из этого получилось.
На замену утилите ping в PowerShell пришел командлет Test-Connection, входящий в состав модуля Microsoft.PowerShell.Management. Для примера пропингуем сервер SRV3 командой:
Можно указать для проверки сразу несколько серверов, например перечислив их через запятую:
или считав из файла:
Еще командлет умеет запускать проверку сразу с нескольких точек. Например, для проверки сервера SRV4 с локального компьютера и с сервера SRV3 воспользуемся следующей командой:
Примечание. Командлет использует класс Win32_PingStatus, поэтому для проверки соединения можно воспользоваться командой Get-WmiObject Win32_PingStatus, ее действие аналогично команде Test-Connection.
Tracert
Следующее средство, обычно применяемое после ping — это трассировка с помощью утилиты tracert. В PowerShell для этих целей можно задействовать командлет Test-NetConnection из модуля NetTCPIP. Не смотря на похожее название, по функционалу он довольно сильно отличается от предыдущего командлета, хотя включает в себя и его возможности. Кроме проверки TCP соединения вывод может включать в себя список IP интерфейсов, разрешение DNS-имен (DNS lookup), правила IPsec и проверку возможности установления соединения. В самом простом варианте команда выглядит так:
Для пошагового вывода в стиле tracert можно сделать так:
Также можно указать определенный порт и сделать детализованный вывод:
IPConfiig
Первое, для чего используют Ipconfig — это просмотр сетевых настроек. В PowerShell для этих целей можно воспользоваться командлетом Get-NetIPConfiguration. Так для подробного вывода настроек для всех сетевых интерфейсов (аналог ipconfig /all) введем команду:
Для операций с клиентом DNS воспользуется командлетами PowerShell из модуля DNSClient. Для очистки содержимого локального кеша DNS вместо ipconfig /flushdns выполним команду Clear-DnsClientCache, для перерегистрации вместо ipconfig /registerdns — команду Register-DnsClient. Вывести содержимое кеша (ipconfig /displaydns) можно командой Get-DnsClientCache. Также можно выводить не все содержимое кеша, а посмотреть только определенную запись, например:
Nslookup
Для проверки DNS имен вместо nslookup можно воспользоваться командлетом Resolve-DnsName, входящий в состав модуля DNSClient. Синтаксис у них похожий, например:
Можно указать тип записи (A, PTR, SRV), указать, откуда брать данные и выбрать определенный DNS-сервер, отличный от дефолтного:
Netstat
Утилита Netstat — еще один инструмент сетевой диагностики, показывающий сетевые подключения. Заменим ее командлетом Get-NetTCPConnection. Следующая команда выведет все подключения к интернету, имеющие статус установленных (Established):
Route
Для управления маршрутизацией вместо утилиты Route воспользуемся несколькими командлетами из модуля NetTCPIP. Для примера попробуем добавить новый постоянный маршрут до сети 172.16.0.0 с маской 255.255.0.0 и шлюзом 192.168.0.1 для интерфейса с номером 3. Вот так это можно сделать с помощью Route:
А вот так при использовании PowerShell:
Для просмотра таблицы маршрутизации вместо route print возьмем командлет Get-NetRoute. Выведем все маршруты для протокола IPv4 командой:
В PS 4.0 появился интересный командлет Find-NetRoute, с помощью которого можно вывести маршрут для одного конкретного IP-адреса, например:
Для удаления маршрута (вместо route delete) также есть отдельный командлет Remove-NetRoute, например:
Для изменения уже созданного маршрута вместо route change можно воспользоваться связкой Remove-NetRoute&New-NetRoute.
Netsh
Утилита Netsh (Network shell) предназначена для выполнения различных задач по настройке сети. Поскольку функционал ее достаточно широк, для сравнения возьмем одну из типичных задач по настройке сетевого интерфейса. Предположим, нам необходимо проверить настройки сетевого интерфейса, и если включен DHCP — отключить его и настроить статическую адресацию. С помощью netsh это будет выглядеть следующим образом:
Netsh interface IPv4 show addresses
Netsh interface IP set address ″Ethernet″ static 192.168.0.11 255.255.255.0 192.168.0.1
Netsh interface IP add DNSServers ″Ethernet″ 8.8.8.8
И тоже самое, но уже с помощью PowerShell:
Что интересно, для изменения сетевых настроек придется их удалить и создать заново. Например IP-адрес можно изменить так:
Примечание. Для изменения IP-адреса логично было бы воспользоваться специально предназначенным для этого командлетом Set-NetIPAddress, но не тут-то было 🙂 При попытке изменить настройки этот командлет стабильно выдает ошибку. Как выяснилось, этот командлет не может изменить сам IP-адрес, а только некоторые его свойства.
Gpupdate и Gpresult
Для обновления групповых политик вместо Gpupdate в модуле GroupPolicy есть командлет Invoke-GPUpdate. Синтаксис у них практически один и тот же, например принудительное обновление политик пользователя выполняется командой:
Ну и посмотреть результирующие политики вместо Gpresult можно командлетом Get-GPResultantSetOfPolicy. Осуществить вывод результатов в HTML-файл можно командой:
CMD vs PowerShell
Как видите, PowerShell вполне в состоянии заменить большинство утилит командной строки. Однако остается еще один вопрос — зачем это нужно.
В достоинства PowerShell, на мой взгляд, можно записать более структурированный вывод результатов, которые к тому-же можно обрабатывать — фильтровать, сортировать и изменять формат вывода. Кроме того, результатом выполнения команд PowerShell являются объекты, которые можно сохранять в переменные, передавать по конвейеру и т.п. Это очень удобно при написании скриптов.
Из недостатков — большинство описанных в статье команд требуют PowerShell 3.0, а некоторые вообще есть только в четвертой версии. Также некоторые командлеты (напр. Set-NetIPAddress) работают криво не совсем так, как должны.
Ну а на стороне CMD проверенный временем функционал, который есть в любой версии Windows. Кроме того, для простых задач администрирования cmd использовать привычнее, а где-то и удобнее.


















