History
1. Command Prompt
The command prompt is a command-line interpreter. It exists on Windows since the introduction of Windows 95. At that time, it wasn’t called the – “Command Prompt” but just “cmd.exe” which let users interact with the operating system via certain commands. And, then with Windows NT, it was dubbed as – “Command Prompt”.
Well, in theory, it was almost the same as COMMAND.COM (or popularly known as MS-DOS) with a lot of improvements on board.
While the command prompt was technically a shell but it had a lot of drawbacks. First, the shell could not help automate all facets of GUI functionality. Second, it did not support the creation of complex scripts.
2. PowerShell
To overcome the disadvantages of the command prompt, Microsoft started developing a shell called Monad, which was a lot more powerful than command prompt (could perform a variety of core administrative tasks which CMD couldn’t).
Later, in the year – 2006 – it was renamed to Microsoft PowerShell. And, recently (in 2016), the PowerShell was made open-source with cross-platform support.
What is PowerShell?
PowerShell is a command line utility but also an entire scripting language built on Microsoft’s .NET platform. It has all the power and capabilities of CMD, and much more. PowerShell allows you to interact with every facet of Windows and can also interact with a wide variety of Microsoft programs and servers. You can work with things like Microsoft Office, Exchange Server, and Microsoft SQL Server. Beyond that, you can interact with non-Microsoft databases as well, like MySQL, IBM’s DB2, and more. You can even create your own programs with GUIs. It’s an extremely powerful tool that is also now open source and can be used on Macs and Linux-based computers.
This is done by using cmdlets, pronounced as “commandlettes”. As the “lettes” part of the word suggests, cmdlets are little commands. In CMD, the commands are self-contained programs, as we showed you that they are executable applications in Windows. Cmdlets are more like building blocks. Each one does a specific thing, but they can be put together to build a full command or script.
Зачем PowerShell обычному пользователю
Разница PowerShell и CMD заключается в их использовании. Последний используется в основном для выполнения пакетных команд, устранения некоторых первичных неполадок. PowerShell, в свою очередь, может использоваться как для выполнения пакетных команд, так и для административных целей.
Важной является возможность создания сценариев (скриптов) — текстовых файлов, содержащих всего одну или целый набор команд PowerShell. В качестве примера создадим простой выводящий текст сценарий, который состоит из одной команды:
В качестве примера создадим простой выводящий текст сценарий, который состоит из одной команды:
- Создаем файл сценария (с расширением ps1), в котором будут прописаны команды:
2. В окне PowerShell вводим & и путь к необходимому файлу:
Теперь давайте разберем, как выполнять простое взаимодействие с системой при помощи CMD и PowerShell.
Как получить помощь?
Первым делом необходимо узнать, какие команды вообще существуют. Это можно узнать, запросив помощь у самого приложения.
В командной строке Windows используется команда help, чтобы отобразить список доступных команд.
В PowerShell, чтобы выполнить такое же действие используется команда Get-help.
Соберите сервер в конфигураторе под свои задачи. Или выберите из более 100 готовых.
Подобрать
Для изменения каталога (папки) в командной строке применяется команда Change Directory (cd). Эта команда позволяет перейти в другую папку с компьютера (изменить текущий каталог).
В PowerShell команда cd является псевдонимом для командлета Set-Location-Path <название каталога>, выполняющего идентичную функцию.
Первая итерация команды CD, которую полезно знать, это CD. Она переводит вас на вершину файловой иерархической структуры (дерева каталогов).
Для перехода в нужную папку с диска, выполните команду CD «название папки». Вложенные папки должны быть разделены символом бэкслэша: . Например, если необходимо перейти в папку user, находящуюся в C:users нужно ввести команду cd usersuser. Используя команду cd .., можно вернуться на один каталог вверх.
Чтобы изменить диск, нужно ввести его название с двоеточием. Например, d:, чтобы переключиться на диск D. В PowerShell используется командлет set-location d:.
От каталогов перейдем к хранящимся в них файлам.
Команда dir (Directory) используется, чтобы перечислить файлы в каталоге через командную строку.
Отличие PowerShell – в используемой для перечисления файлов команде. Чтобы перечислить файлы в каталоге, используется команда Get-ChildItem.
Как переименовать файл?
Чтобы переименовать файл в каталоге, в cmd используется команда ren (rename). После нее сначала вводится имя файла, которое вы хотите заменить, затем вводится желаемое имя. Например, ren dir1 dir2.
В Windows PowerShell используется команда Rename-Item для переименования папки путем передачи пути к переименовываемой папке и целевого имени. Например, C:Windowsdir1 dir2.
Далее разберем важные утилиты, которые могут пригодиться при взаимодействии с системой, а также их отличия в CMD и PowerShell.
PowerShell vs Command Prompt: a Comparison
Before talking about the differences, it is worth discussing the characteristics that are shared by CMD and PowerShell. First of all, they have similar ancestors: the teletype machines of the 19th century. These machines were used in a similar way to all command lines nowadays. Even though technologies have developed drastically, a user still enters symbols on a machine and receives a result after these symbols have been interpreted and processed by this machine – like many years ago. Another point is that CMD and PowerShell appear to be attachments to the Windows console. Neither of them is a console itself; they’re just additions.
And this functionality – we finally come to the PowerShell vs CMD technical comparison – differs a lot. Since CMD is a child of the MS-DOS command line, it inherited simple batch commands that any former DOS user remembers – like “cd” or “dir”. These commands can be used to create scripts, and sometimes these scripts have to be very complicated in order to handle a given task. In PowerShell, there are no commands; instead, administrators utilize cmdlets (“command-lets”) – small scripts with clear names. One PowerShell cmdlet can replace a long sequence of CMD commands. Here are some examples:
Changing a directory:
Command prompt
Windows PowerShell
Getting the last backup type from logs and displaying it
Command prompt script
Windows PowerShell
Calculating a date:
Command prompt script
Windows PowerShell
Another difference is that CMD commands return text and, if a user needs some data, they must parse this text in order to get the required information. PowerShell cmdlets return objects that can be used for direct manipulation. To transfer these objects between cmdlets, pipes are used; they channel all the data so that it can be used in any number of cmdlets. Also, in CMD, the number of variables is limited and you have to pass them into commands in a strict order. PowerShell doesn’t have such limits.
Moreover, PowerShell is based on the .NET framework and can interact with any Windows objects, even core ones, unlike command prompt, which was not designed for system administration. While interacting with these objects, an administrator can create their own cmdlets in PowerShell to automate everyday tasks. In the process, administrators can use an embedded help system (it can be accessed via the Get-Help cmdlet) or test their creations. In the command prompt, there’s no opportunity to test a script; you have to enter everything properly the first time or it won’t work as expected and you may even lose some vital data. Thus, PowerShell is safer.
All this significantly improves the performance and usability of scripts; with PowerShell, you can do everything that CMD allows and much more. CMD is more backward-oriented; Microsoft wants it to be compatible with all old versions. So CMD might receive some updates, but not a lot. Accordingly, Microsoft switched to PowerShell, which gets regular updates and enhancements, and has a strong and active community.
However, note that you need to update PowerShell manually and, if your OS is old, there might be compatibility problems.
So What’s the Difference Between CMD and PowerShell?
There are a lot of technical differences between them, and if you’d like, you can do more research on it. But what’s important to know is that PowerShell is far less limited than CMD. Think of PowerShell as being what CMD wanted to be when it grew up. If CMD is a multi-tool, then PowerShell is the whole garage full of tools.
When you start comparing the commands and cmdlets, you’ll also notice that it’s easier to understand what a PowerShell cmdlet might do. Some of the commands are cryptic unless you learn them and use them repeatedly. The purpose of commands like CHKDSK, RMDIR, and TRACERT isn’t as obvious to the average person. But cmdlets follow the naming convention of verb-Noun. The first part tells you what action the cmdlet is going to do, and the second part tells you what thing it is going to do it to. For example, anyone can tell that the cmdlet Get-Help is going to get you to help somehow.
Возможности создания сценариев: базовая пакетная обработка и расширенная автоматизация
Сценарии CMD основаны на простых пакетных файлах, подходящих для базовой автоматизации, например резервного копирования файлов или установки программного обеспечения. Отсутствие расширенных функций ограничивает его применение в сложных административных сценариях. PowerShell, с другой стороны, предлагает комплексную среду сценариев. Его сценарии поддерживают расширенные функции, такие как обработка ошибок, пользовательские функции и классы .NET, что обеспечивает комплексную автоматизацию задач и взаимодействие с системой.
Манипулирование объектами и управление системой
CMD предлагает ограниченные возможности для прямого взаимодействия с системой, в первую очередь для обработки основных файловых операций и настроек системных переменных. Он не справляется с манипулированием системными объектами или доступом к расширенным системным функциям. PowerShell, использующий .NET Framework, превосходно справляется с прямым манипулированием системой. Его способность обрабатывать разнообразные системные объекты и ресурсы делает его незаменимым для современного системного администрирования.
Расширение возможностей: контрастность настройки
Настройка CMD ограничивается пакетными файлами и встроенными командами, что дает ограниченные возможности. PowerShell с поддержкой модулей и командлетов обеспечивает широкие возможности настройки. Этот модульный подход позволяет пользователям значительно расширять функциональность PowerShell, адаптируясь к различным задачам и средам.
Так в чем же разница между CMD и PowerShell?
Между ними много технических различий, и если вы хотите, вы можете провести больше исследований по этому вопросу
Но важно знать, что PowerShell гораздо менее ограничен, чем CMD. Думайте о PowerShell как о том, чем CMD хотела стать, когда выросла
Если CMD — это многофункциональный инструмент, то PowerShell — это целый гараж, полный инструментов.
Когда вы начнете сравнивать команды и командлеты, вы также заметите, что легче понять, что может делать командлет PowerShell. Некоторые из команд загадочны, если вы не выучите их и не будете использовать неоднократно. Цель таких команд, как ЧКДСК, RMDIRи ТРАСЕРТ не столь очевидно для обычного человека. Но командлеты следуют соглашению об именах глагол существительное. В первой части рассказывается, какое действие будет выполнять командлет, а во второй — с чем он собирается это делать. Например, любой может сказать, что командлет Получить помощь собирается помочь вам как-то.
Целевая аудитория: обычные пользователи и ИТ-специалисты
Различие в целевой аудитории между командной строкой (CMD) и PowerShell является важным аспектом, определяющим их дизайн и функциональность. CMD в первую очередь ориентирован на простых пользователей, которым требуется простой и несложный интерфейс для рутинных задач. В эту группу пользователей входят люди с ограниченными техническими знаниями или те, кому необходимо выполнять простые операции, такие как управление файлами, основные системные запросы или запуск предопределенных сценариев. Простота и удобство использования CMD делают его идеальным инструментом для таких пользователей, предоставляя доступную точку входа для утилит командной строки без сложностей сложных сценариев или системного администрирования. Его команды относительно легко выучить и запомнить, что делает CMD практичным выбором для обычных пользователей или тех, кто время от времени взаимодействует с командной строкой Windows для быстрых исправлений или незначительных корректировок.
Напротив, PowerShell разработан с учетом потребностей ИТ-специалистов и опытных пользователей. Это пользователи, которым требуется более надежный и универсальный набор инструментов для комплексного управления системой, автоматизации и расширенных сценариев. PowerShell предназначен для системных администраторов, разработчиков и технических специалистов, которым необходимо управлять сложными рабочими процессами, автоматизировать задачи в нескольких системах и сложными способами манипулировать данными. Богатый набор функций PowerShell, включая объектно-ориентированные сценарии, доступ к платформе .NET и расширенные возможности манипулирования данными, делает его очень подходящим для решения этих сложных задач. Более того, способность PowerShell интегрироваться с различными сетевыми компонентами и управлять рядом системных ресурсов делает его предпочтительным инструментом в корпоративных средах и среди профессионалов, управляющих крупномасштабными ИТ-инфраструктурами. Его масштабируемость и гибкость позволяют этим пользователям создавать сложные сценарии автоматизации, управлять конфигурациями системы и выполнять сложные административные задачи с большей эффективностью и контролем.
Windows Command Prompt—MS-DOS For Modern Systems
In the dark ages of black terminals and typed commands, Microsoft became popular through its MS-DOS operating system. Even when the company finally transitioned out of the Command Line Interface (CLI), Microsoft built the OS on top of MS-DOS. Users could still access its functionality using the MS-DOS Prompt, later renamed to just Command Prompt.
All versions of the Windows operating system include the Command Prompt, whether Windows NT, Windows 7, or Windows 10. Running the Command Prompt opens a black terminal window with a blinking cursor ready to accept commands. The default active directory is the current user’s folder, though you can switch that easily with the CD command.
You can use a variety of commands to perform useful tasks, from verifying the integrity of your system files to checking the hard drive for logical errors. You can even format a drive or hide files using the Command Prompt. Entering “DIR” lists the contents of the active directory, letting you access or rename any files or folders.
The only problem with the command prompt is that it’s just an interpreter. While you can use batch files to reuse a collection of commands, it is nowhere near as powerful as a proper shell like Bash. Moreover, every new release of Windows takes the GUI further and further away from command-line representation, meaning you can’t actually control much using the Command Prompt.
Наиболее распространенные команды в CMD.exe
Используйте эти команды в командной строке, нажмите Enter, чтобы использовать их.
ПОМОЩЬ— Будет список общих командCD – Отображает имя или изменяет текущий каталог.ЧДИР – Отображает имя или изменяет текущий каталог.ЧКДСК – Проверяет диск и отображает отчет о состоянии.ЦЛС – очищает экран. Удобен после того, как запустил кучу команд.КОПИРОВАТЬ – Копирует один или несколько файлов в другое место.ДЕЛ – Удаляет один или несколько файлов.ДИР – Отображает список файлов и подкаталогов в каталоге.ДИСКОВАЯ ЧАСТЬ – Отображает или настраивает свойства раздела диска.ВЫХОД – Закрывает программу CMD.EXE (интерпретатор команд).MKDIR Создает каталог.БОЛЕЕ – Отображает вывод по одному экрану за раз. Полезно, когда команда возвращает много информации и просто продолжает прокручиваться.ДВИГАТЬСЯ – Перемещает один или несколько файлов из одного каталога в другой каталог.ПЕРЕИМЕНОВАТЬ – Переименовывает файл или файлы.RMDIR – Удаляет каталог.СИСТЕМНАЯ ИНФОРМАЦИЯ – Отображает свойства и конфигурацию машины.СПИСОК ЗАДАНИЙ – Отображает все запущенные в данный момент задачи, включая службы.TASKKILL – Убить или остановить работающий процесс или приложение.
Technical Functions
The technical differences would only matter to someone who wants to manage and automate certain tasks by interacting with the OS via a command-line interface. If you have no idea what a programming language is – knowing the technical differences won’t help you.
PowerShell uses a different set of commands known as cmdlets. You can try controlling a lot of system administration tasks with it. However, you can’t access the same via command prompt. PowerShell also lets you utilize – ”Pipes” – which is just a way to easily facilitate the transfer of information from one program to another – this makes PowerShell even more powerful.
Also, as stated above, with PowerShell, you can create complex scripts but that’s not going to happen with the command prompt.
In a nutshell, PowerShell is an improved command-line environment when compared to the command prompt.
How to Use Command Prompt?
For using Command Prompt, type a valid Command Prompt query and any optional inputs. Command Prompt then runs the command as provided and executes the operation or task in Windows that it was meant to accomplish.
For instance, under your Downloads folder, running the following Command Prompt command would erase all PNGs from that folder:
del *.png |
Commands must be typed exactly into Command Prompt. The incorrect syntax or typo might lead the command to fail or, worse, this could run the incorrect command or the correct command incorrectly. It is suggested that you be familiar with command syntax.
— Advertisement —
The syntax is so crucial that inserting even a single space to some instructions, particularly the delete command, might result in the deletion of totally different data.
Погружаемся глубже в тему, вернее в Windows.
Помимо всего прочего PowerShell можно запускать из проводника и отправлять в конкретную папку. Для этого нужно в папке в правой части на пустой белой половине нажать правую кнопку мыши и выбрать пункт «открыть PowerShell». Иной возможности запустить командную строку с правами администратора у нас к сожалению нет.
Команды могут оказаться для вас сложными, но далее мы покажем, как с ними взаимодействовать. Пункты контекстного меню настраиваются по следующему пути: папка — проводник — реестр — записи. Таковых и нужных нам три штуки в подразделах в HKEY_ CLASSES_ROOTDirectoryshell. Если кликнуть правой кнопкой мыши на значок папки или на часть списка, ну, или в правой части пустого поля, то произойдёт одно и то же, так что не принципиально что вы выберите и сделаете главное, что вот результат этих действий нам и нужен. Контекстное меню в папке в свободной области управляется подразделом HKEY_CLASSES_ROOTDirectoryBackgroundShell. Лезем глубже. В записях под HKEY_CLASSES_ROOTDriveshell есть команды контекстного меню дисков.
Итак, рассмотрим описание записей в HKEY_CLASSES_ROOTDirectoryshell поближе. В ранних версиях Windows можно было с помощью правой кнопки мыши + Shift открыть контекстное меню папки и выбрать пункт открыть «командную строку». Эта функция была в Windows 10 1703 уже убрана, а жаль.
Посмотрите на ключ в Windows 10 с помощью редактора реестра где есть подраздел cmd с записями для командной строки. Интересно то что, Microsoft добавила сюда запись HideBasedOnVelocityId, точное значение которой нигде публично не задокументировано и не описано, но, позволяет проводнику подавить команду. Если просто попробовать удалить это значение или назначить ему значение 0, то без прав редактирования ничего не выйдет. Изменения в ней ни к чему не приводят.
По непонятным причинам Microsoft настроила ключ cmd (а также соседний ключ Powershell) так, чтобы их содержимое не могло быть изменено даже администраторами или системной учетной записью, но есть лазейка. Это может сделать только учетная запись «TrustedInstaller». Нам нужно ее как-то получить, но вот не задача. Нет ни одного способа получить эту учетную запись с помощью «выполнить как» или аналогичных механизмов в использовании. Можно конечно изменить права ключа таким образом, чтобы администраторы могли что-то редактировать, но лучше этого не делать. Потому что это может вызвать проблемы при следующем обновлении Windows, хотя если вы заблокировали обновления, то можете попробовать, мы же рассмотрим иной вариант.
Вот и тот самый вариант, который мы рассмотрим подробнее. Для этого вам нужно знать, что на самом деле нет ключа у реестра HKEY_CLASSES_ROOT. Он просто ярлык для HKEY_LOCAL_MACHINE SoftwareClasses и HKEY_CURRENT_USER SoftwareClasses. При противоречивых записях в обоих путях приоритет получает последний.
Ключ HKEY_CURRENT_USER и все его подразделы принадлежат не только логически, но и юридически зарегистрированной учетной записи пользователя и вы можете внести изменения в ней, как вам нужно для ваших целей. Таким образом, чтобы восстановить команду командной строки, отключенную Microsoft, вы можете создать в реестре путь к ключу HKEY_CURRENT_USERSoftware ClassesDirectoryshellcmd, если он еще не существует, и там есть запись DWORD с именем HideBasedOn, она то нам и нужна. Создадим VelocityId со значением 0. То же самое относится и к вышеупомянутым вариантам. Под ct.de/yvma можно найти .reg — файл для загрузки, который вы можете дважды щелкнуть в вашем реестре и сделать записи. Кроме того, он содержит копии соответствующих записей из HKEY_LOCAL_MACHINESoftware Classes и помещает их в HKEY_CURRENT_USER Software Classes, чтобы защитить их от любых изменений, которые Microsoft может по своей прихоти внести в более поздних версиях Windows. Кроме того, файл по-прежнему пропускает команды контекстного меню, описанные здесь. Если после обновления Windows возникнут непредвиденные проблемы с контекстным меню или вообще с чем нибудь ещё, вы можете импортировать reg – файл и возможно, экспортировать ключ HKEY_CURRENT_USERSoftware ClassesDirectory из своего реестра и удалить его, чтобы восстановить исходное состояние.
Выбор подходящего инструмента для решения задачи
Решение использовать командную строку (CMD) или PowerShell во многом зависит от характера и сложности поставленной задачи. CMD — идеальный выбор для простых и понятных задач, требующих базового интерфейса командной строки. Простота использования и знакомство делают его хорошо подходящим для рутинных операций, таких как навигация по файлам, основные системные запросы или выполнение простых сценариев. Пользователи, которые не глубоко разбираются в технических сценариях или системном администрировании, найдут CMD удобным и достаточным для своих нужд. Его простой синтаксис и немедленное выполнение команд обеспечивают быстрое и простое решение основных задач, что делает его идеальным инструментом для пользователей, которые ищут простоту и немедленные результаты без необходимости в продвинутых навыках программирования или сложных структурах команд.
С другой стороны, PowerShell — лучший инструмент для решения более сложных и сложных задач. Его особенно предпочитают ИТ-специалисты, системные администраторы и опытные пользователи, которым требуется мощная и универсальная среда сценариев. PowerShell превосходно справляется со сложными сценариями, автоматизацией задач и расширенным управлением системой, предлагая широкий спектр возможностей, намного превосходящий возможности CMD. Его интеграция с платформой .NET обеспечивает надежную работу со сценариями, позволяя пользователям писать и выполнять сценарии, которые выполняют сложные операции, сложным образом манипулируют данными и автоматизируют повторяющиеся задачи в разных системах. Более того, объектно-ориентированный подход PowerShell и его способность работать с различными системными объектами делают его незаменимым инструментом для детального администрирования и управления системой. Он предлагает уровень контроля и гибкости, необходимый для управления современными ИТ-средами, что делает его важным инструментом для пользователей, которым необходимо выйти за рамки простого выполнения команд для достижения детального, автоматизированного и эффективного управления системой.
Хотя CMD и PowerShell обеспечивают взаимодействие с командной строкой в Windows, они удовлетворяют разные потребности. CMD подходит для базовых задач и пользователей, ищущих простоту. PowerShell с его расширенными функциями и объектно-ориентированным подходом ориентирован на управление и автоматизацию сложных систем, что делает его мощным инструментом для ИТ-специалистов и опытных пользователей. Выбор между CMD и PowerShell зависит от сложности и требований поставленной задачи.