Перейти к основному содержимому

Основные команды Windows


Назначение

Команды, пути, службы и параметры Windows в CMD и PowerShell — для администрирования и повседневной работы в терминале. Учебный курс: раздел.


Краткое пояснение

Справочник с парами "классическая команда CMD → аналог PowerShell". Для новых сценариев предпочтительнее PowerShell и pwsh; CMD и .bat остаются в legacy-скриптах и инструкциях вендоров. Базовые понятия (терминал vs оболочка, PATH) — в вводной статье; автоматизация — Сценарии для автоматизации, Автоматизация задач в Windows с помощью PowerShell.

С 2025 года Microsoft развивает Coreutils for Windows (Preview): winget install Microsoft.Coreutils добавляет в PATH нативные ls, grep, find, cp и другие Unix-утилиты с Linux-подобными флагами. Это дополнение к PowerShell, а не замена; для bash-скриптов по-прежнему нужны Git Bash или WSL — см. grep на Windows.


Справочные таблицы

Содержание справочника


Важнейшие команды командной строки

Команда в CMDКоманда в PowerShellНазначение
dirGet-ChildItemСписок файлов и папок
cdSet-LocationПерейти в другую директорию
cd (без аргументов) / echo %CD%Get-Location / pwdПоказать текущую директорию
md, mkdirNew-Item -ItemType DirectoryСоздать директорию
rd /s /qRemove-Item -Recurse -ForceУдалить папку рекурсивно
copyCopy-ItemКопировать файлы
delRemove-ItemУдалить файл
renRename-ItemПереименовать файл или папку
moveMove-ItemПереместить файлы
typeGet-ContentПрочитать содержимое файла
findstrSelect-StringИскать текст в файле
icaclsGet-Acl / icaclsПрава доступа (ACL)
wmic logicaldisk …Get-PSDriveИнформация о дисках
tasklistGet-ProcessСписок процессов
taskkillStop-ProcessОстановить процесс
pingTest-ConnectionПроверить связь
curlInvoke-WebRequestHTTP-запрос
Invoke-WebRequest -OutFileСкачать файл (предпочтительно вместо bitsadmin)
shutdownStop-ComputerВыключить компьютер
shutdown /rRestart-ComputerПерезагрузить
setGet-ChildItem Env:Переменные окружения
set VAR=…$env:VAR = "…"Задать переменную
doskey /historyGet-HistoryИстория команд
help командаGet-HelpСправка
whereGet-CommandПуть к исполняемому файлу
hostname$env:COMPUTERNAMEИмя компьютера
treeGet-ChildItem -RecurseДерево каталогов
dir /s *.txtGet-ChildItem -RecurseПоиск файлов
clsClear-HostОчистить терминал
type nul > file.txtNew-Item file.txtПустой файл
mklinkNew-Item -ItemType SymbolicLinkСимволическая ссылка
Expand-ArchiveРаспаковать zip
winget installУстановить программу
Start-Process -Verb RunAsЗапуск от администратора
whoamiwhoamiИмя пользователя
net userwhoami /groupsГруппы пользователя
net startStart-ServiceЗапустить службу
sc config … start= disabledSet-Service -StartupType DisabledОтключить автозапуск службы
sc config … start= demandSet-Service -StartupType ManualРучной запуск службы
eventvwrGet-WinEvent / Get-EventLogЖурналы событий
dateGet-DateДата и время
ipconfigGet-NetIPConfigurationСетевые настройки
netstat -anoGet-NetTCPConnectionОткрытые порты

Работа с файловой системой

dir / Get-ChildItem — просмотр содержимого каталога

CMD

C:\Users\Timur> dir
Volume in drive C has no label.
Volume Serial Number is A1B2-C3D4

Directory of C:\Users\Timur

03/12/2026 10:00 <DIR> Documents
03/12/2026 11:05 <DIR> Downloads
03/12/2026 09:15 128 notes.txt
1 File(s) 128 bytes
2 Dir(s) 20,000,000,000 bytes free

PowerShell

PS C:\Users\Timur> Get-ChildItem

Directory: C:\Users\Timur

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 3/12/2026 10:00 AM Documents
d----- 3/12/2026 11:05 AM Downloads
-a---- 3/12/2026 9:15 AM 128 notes.txt

cd / Set-Location — переход между каталогами

CMD

C:\> cd Users\Timur
C:\Users\Timur>

PowerShell

PS C:\> Set-Location -Path "C:\Users\Timur"
PS C:\Users\Timur>

Краткая форма:

PS C:\> cd C:\Users\Timur

md, mkdir / New-Item -ItemType Directory — создание папки

CMD

C:\Users\Timur> mkdir my_project
C:\Users\Timur> dir
...
<DIR> my_project

PowerShell

PS C:\Users\Timur> New-Item -ItemType Directory -Name "my_project"

copy / Copy-Item — копирование файлов

CMD

C:\Users\Timur> copy notes.txt backup_notes.txt
1 file(s) copied.

PowerShell

PS C:\Users\Timur> Copy-Item -Path "notes.txt" -Destination "backup_notes.txt"

move / Move-Item — перемещение или переименование

CMD

C:\Users\Timur> move old_name.txt new_name.txt
1 file(s) moved.

PowerShell

PS C:\Users\Timur> Move-Item -Path "old_name.txt" -Destination "new_name.txt"

del / Remove-Item — удаление файла

CMD

C:\Users\Timur> del notes.txt
C:\Users\Timur> del /q /f *.tmp

Флаги: /q — без подтверждения, /f — принудительно (файлы «только чтение»).

PowerShell

PS C:\Users\Timur> Remove-Item -Path "notes.txt"
PS C:\Users\Timur> Remove-Item -Path "*.tmp" -Force

ren / Rename-Item — переименование файла или папки

CMD

C:\Users\Timur> ren draft.txt final.txt
C:\Users\Timur> ren my_project my_project_v2

PowerShell

PS C:\Users\Timur> Rename-Item -Path "draft.txt" -NewName "final.txt"
PS C:\Users\Timur> Rename-Item -Path "my_project" -NewName "my_project_v2"

attrib / Get-Item — атрибуты файла (скрытый, только чтение)

CMD

C:\Users\Timur> attrib notes.txt
A C:\Users\Timur\notes.txt

C:\Users\Timur> attrib +R notes.txt
C:\Users\Timur> attrib -R notes.txt

A — архивный, R — только чтение, H — скрытый, S — системный.

PowerShell

PS C:\Users\Timur> (Get-Item "notes.txt").Attributes
Archive

PS C:\Users\Timur> (Get-Item "notes.txt").IsReadOnly = $true
PS C:\Users\Timur> (Get-Item "notes.txt").IsReadOnly = $false

rd /s /q / Remove-Item -Recurse -Force — удаление папки со всем содержимым

CMD

C:\Users\Timur> rd /s /q old_project

PowerShell

PS C:\Users\Timur> Remove-Item -Path "old_project" -Recurse -Force
Стоп-лист: удаление в Windows

rd /s /q и Remove-Item -Recurse -Force необратимы при неверном пути.

См. также Опасные скрипты.


type / Get-Content — вывод содержимого файла

CMD

C:\Users\Timur> type config.json
{
"port": 8080,
"debug": true
}

PowerShell

PS C:\Users\Timur> Get-Content -Path "config.json"
{
"port": 8080,
"debug": true
}

Последние строки лога (аналог tail):

PS C:\Users\Timur> Get-Content -Path "app.log" -Tail 20

Первые строки:

PS C:\Users\Timur> Get-Content -Path "app.log" -Head 10

Записать текст в файл из CMD:

C:\Users\Timur> echo Hello > greeting.txt
C:\Users\Timur> echo Line 2 >> greeting.txt

В PowerShell для многострочного текста удобнее:

PS C:\Users\Timur> @"
Line 1
Line 2
"@ | Set-Content -Path "greeting.txt"

Поиск и фильтрация

Нативный grep на Windows (без WSL) — опционально через Microsoft Coreutils (Preview): winget install Microsoft.Coreutils. Классический путь Microsoft — findstr и Select-String ниже.

findstr / Select-String — поиск текста в файле

Подробнее — поиск текста в файлах.

CMD

C:\Users\Timur> findstr "error" app.log
2026-03-10 14:22:01 ERROR Connection timeout
2026-03-11 09:15:33 ERROR Invalid token

PowerShell

PS C:\Users\Timur> Select-String -Pattern "error" -Path "app.log"

Переменные окружения

set / Get-ChildItem Env: — просмотр переменных

CMD

C:\> set
...
USERPROFILE=C:\Users\Timur
USERNAME=Timur
...

PowerShell

PS C:\> Get-ChildItem Env:

Установка переменной

CMD

C:\> set API_KEY=secret123
C:\> echo %API_KEY%
secret123

PowerShell

PS C:\> $env:API_KEY = "secret123"
PS C:\> $env:API_KEY
secret123

Одна переменная:

C:\> echo %USERPROFILE%
C:\Users\Timur
PS C:\> $env:USERPROFILE
C:\Users\Timur
PS C:\> $env:Path -split ';' | Select-Object -First 5

Процессы и служебные команды

help / Get-Help — справка по команде

CMD

C:\> help dir
C:\> dir /?
C:\> help copy

PowerShell

PS C:\> Get-Help Get-ChildItem
PS C:\> Get-Help Get-ChildItem -Examples
PS C:\> Get-Help Get-ChildItem -Full

where / Get-Command — где лежит исполняемый файл

CMD

C:\> where python
C:\Users\Timur\AppData\Local\Programs\Python\Python312\python.exe
C:\> where git
C:\Program Files\Git\cmd\git.exe

PowerShell

PS C:\> Get-Command python
PS C:\> (Get-Command python).Source
C:\Users\Timur\AppData\Local\Programs\Python\Python312\python.exe
PS C:\> Get-Command -Name *curl*

whoami — текущий пользователь и группы

CMD

C:\> whoami
desktop-pc\timur

C:\> whoami /groups

PowerShell

PS C:\> whoami
desktop-pc\timur

PS C:\> [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
DESKTOP-PC\timur

tasklist / Get-Process — список процессов

CMD

C:\> tasklist | findstr python
python.exe 1234 Console 1 12,345 K

PowerShell

PS C:\> Get-Process -Name python

Сортировка по памяти:

PS C:\> Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10 Name, Id, @{N='MB';E={[math]::Round($_.WorkingSet/1MB,1)}}

taskkill / Stop-Process — завершение процесса

CMD

C:\> taskkill /PID 1234 /F
SUCCESS: The process with PID 1234 has been terminated.

PowerShell

PS C:\> Stop-Process -Id 1234 -Force

net user %username% — группы пользователя (только CMD)

C:\> net user Timur
User name Timur
Full Name
Comment
User's comment
Country/region code 000 (Система Default)
Account active Yes
Account expires Never
...
Local Group Memberships *Administrators *Users

net start / Start-Service — управление службами

CMD

C:\> net start Spooler
The Print Spooler service is starting.
The Print Spooler service was started successfully.

PowerShell

PS C:\> Start-Service -Name "Spooler"

Сетевые команды

hostname — имя компьютера

CMD

C:\> hostname
DESKTOP-PC

PowerShell

PS C:\> hostname
DESKTOP-PC
PS C:\> $env:COMPUTERNAME
DESKTOP-PC

ping / Test-Connection — проверка доступности хоста

CMD

C:\> ping -n 4 google.com
Pinging google.com [142.250.180.78] with 32 bytes of data:
Reply from 142.250.180.78: bytes=32 time=24ms TTL=117
...

PowerShell

PS C:\> Test-Connection -ComputerName google.com -Count 4

Только успех/неудача (без подробного вывода):

PS C:\> Test-Connection -ComputerName 192.168.1.1 -Count 1 -Quiet
True

curl / Invoke-WebRequest — получение данных из сети

CMD

C:\> curl https://httpbin.org/ip
{
"origin": "192.0.2.1"
}

PowerShell

PS C:\> Invoke-WebRequest -Uri "https://httpbin.org/ip"

Для получения только тела ответа:

PS C:\> (Invoke-WebRequest -Uri "https://httpbin.org/ip").Content

Загрузка файла по URL

PowerShell (рекомендуется)

PS C:\> Invoke-WebRequest -Uri "https://example.com/file.txt" -OutFile "C:\file.txt"

CMD: утилита bitsadmin устаревает; в новых сценариях используйте PowerShell или curl.exe (встроен в Windows 10+):

C:\> curl -L -o C:\file.txt https://example.com/file.txt

Системные действия

shutdown /s /t 0 / Stop-Computer — выключение

CMD

C:\> shutdown /s /t 0

PowerShell

PS C:\> Stop-Computer

Требует прав администратора.


shutdown /r /t 0 / Restart-Computer — перезагрузка

CMD

C:\> shutdown /r /t 0

PowerShell

PS C:\> Restart-Computer

Архивация и установка ПО

Распаковка архива (PowerShell)

PS C:\> Expand-Archive -Path "archive.zip" -DestinationPath "."

Установка программ (PowerShell)

Через winget:

PS C:\> winget install Git.Git

Через PackageManagement:

PS C:\> Install-Package -Name git -ProviderName winget

Запуск от имени администратора

PowerShell

PS C:\> Start-Process powershell -Verb RunAs

Откроется новое окно PowerShell с повышенными привилегиями.


Логи и диагностика

eventvwr — графический просмотрщик событий (CMD)

C:\> eventvwr

Запускает приложение "Просмотр событий".


Аналог в PowerShell

# Классический cmdlet (ещё встречается в материалах)
PS C:\> Get-EventLog -LogName System -Newest 10

# Предпочтительно на современных системах
PS C:\> Get-WinEvent -LogName System -MaxEvents 10

Работа с дисками и хранилищем

Информация о дисках

CMD (через WMIC)

C:\> wmic logicaldisk get caption, freespace, size
Caption FreeSpace Size
C: 21474836480 53687091200
D: 107374182400 107374182400

Значения указаны в байтах.

PowerShell

PS C:\> Get-PSDrive -PSProvider FileSystem

Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
C 32.00 20.00 FileSystem C:\
D 0.00 100.00 FileSystem D:\

Управление правами доступа

icacls — настройка ACL (только CMD)

Предоставить полный доступ пользователю:

C:\> icacls "C:\secure\file.txt" /grant Timur:F
processed file: C:\secure\file.txt
Successfully processed 1 files
  • F — полный доступ (Full control);
  • Можно указать группу: Users:(R) — право на чтение.

Просмотр текущих прав:

C:\> icacls "C:\secure\file.txt"
C:\secure\file.txt NT AUTHORITY\SYSTEM:(F)
BUILTIN\Administrators:(F)
Timur:(F)

Символические ссылки и точки соединения

Создание символической ссылки

CMD

C:\> mklink shortcut.txt original.txt
symbolic link created for shortcut.txt <<===>> original.txt

Для каталогов:

C:\> mklink /D my_docs C:\Users\Timur\Documents

PowerShell

PS C:\> New-Item -ItemType SymbolicLink -Path "shortcut.txt" -Target "original.txt"

Для папок:

PS C:\> New-Item -ItemType Junction -Path "my_docs" -Target "C:\Users\Timur\Documents"

Требуются права администратора при создании ссылок на системные ресурсы или в защищённых каталогах.


Дата, время и локаль

Текущая дата и время

CMD

C:\> date
The current date is: 03/12/2026
Enter the new date: (mm-dd-yy)

C:\> time
The current time is: 14:30:45.12
Enter the new time:

PowerShell

PS C:\> Get-Date
Thursday, March 12, 2026 14:30:45

PS C:\> Get-TimeZone
Id : Russian Standard Time
DisplayName : (UTC+03:00) Moscow, St. Petersburg, Volgograd
BaseUtcOffset : 03:00:00

Изменение времени (требует прав администратора):

PS C:\> Set-Date -Date "2026-03-12 15:00:00"

Поиск файлов

tree — дерево каталогов

CMD

C:\Projects> tree /F
Folder PATH listing
Volume serial number is A1B2-C3D4
C:\PROJECTS
├───my_app
│ main.py
│ config.json
└───docs
readme.md

/F — показать файлы; /A — ASCII-ветки вместо псевдографики.

PowerShell

PS C:\Projects> tree /F
# tree.exe — внешняя утилита Windows, доступна и из PS

PS C:\Projects> Get-ChildItem -Recurse | Select-Object FullName

Рекурсивный поиск по маске

CMD

C:\> dir /s *.log
Volume in drive C has no label.
Directory of C:\logs
03/12/2026 10:00 1024 app.log
...

PowerShell

PS C:\> Get-ChildItem -Path "C:\" -Recurse -Include "*.log" -ErrorAction SilentlyContinue

Поиск по имени (без рекурсии в текущей папке):

PS C:\Projects> Get-ChildItem -Filter "*.json" -Recurse

Флаг -ErrorAction SilentlyContinue подавляет ошибки доступа к защищённым каталогам.


История команд

Просмотр истории

CMD

C:\> doskey /history
dir
cd Projects
git status

PowerShell

PS C:\> Get-History

Id CommandLine
-- -----------
1 dir
2 cd Projects
3 git status

Выполнение по ID:

PS C:\> Invoke-History -Id 2

Пустые файлы и очистка экрана

Создание пустого файла

CMD

C:\> type nul > empty.txt

PowerShell

PS C:\> New-Item -Path "empty.txt" -ItemType File

Очистка терминала

CMD

C:\> cls

PowerShell

PS C:\> Clear-Host
PS C:\> cls

Запуск служб и проверка их состояния

Проверка статуса службы

PowerShell

PS C:\> Get-Service -Name "Spooler"

Status Name DisplayName
------ ---- -----------
Running Spooler Print Spooler

Остановка:

PS C:\> Stop-Service -Name "Spooler"

Тип запуска службы — Set-Service

Лишние службы удобно отключать из терминала, не открывая services.msc. Нужен PowerShell от имени администратора.

PS C:\> Set-Service -Name YandexBrowserService -StartupType Disabled
PS C:\> Set-Service -Name YandexBrowserService -StartupType Manual

Общий шаблон:

Set-Service -Name <имя_службы> -StartupType <Automatic | Manual | Disabled>
-StartupTypeСмысл
AutomaticЗапуск при загрузке Windows
ManualТолько по требованию (приложение, ОС или администратор)
DisabledЗапуск запрещён

Так можно выключить службу, вернуть ручной режим, включить автозапуск, а текущее состояние менять через Start-Service и Stop-Service. Имя — в Get-Service (колонка Name), не путать с DisplayName.

CMD (аналог):

C:\> sc config YandexBrowserService start= disabled
C:\> sc config YandexBrowserService start= demand

Подробнее о классификации служб — Управление службами в Windows.


Обновление переменных окружения в сессии

Иногда после установки ПО нужно обновить PATH без перезапуска терминала.

PowerShell

PS C:\> $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

Теперь новые пути из системных и пользовательских переменных доступны в текущей сессии.


Диагностика сети

Просмотр сетевых интерфейсов

CMD

C:\> ipconfig

Windows IP Configuration

Ethernet adapter Ethernet:
Connection-specific DNS Suffix . : home
IPv4 Address. . . . . . . . . . . : 192.168.1.10
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1

Подробный вывод (MAC, DNS, DHCP):

C:\> ipconfig /all

Сброс кэша DNS после смены записей:

C:\> ipconfig /flushdns

PowerShell

PS C:\> Get-NetIPConfiguration

Все IPv4-адреса на машине:

PS C:\> Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notlike '127.*' }

Просмотр открытых портов

Готовые цепочки (PID → CommandLine → taskkill, поиск node с Docusaurus) — Lab / CLI — типовые сценарии.

CMD

C:\> netstat -ano | findstr :80
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4567

PID 4567 можно использовать с tasklist для определения процесса.

PowerShell

PS C:\> Get-NetTCPConnection -LocalPort 80

Все прослушиваемые порты с именем процесса:

PS C:\> Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess, @{N='Process';E={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}}

Ошибки

СитуацияЧто проверить
"не является внутренней или внешней командой"PATH, полный путь к .exe, опечатка в имени
Отказ в доступеЗапуск от администратора, ACL (icacls), UAC
Скрипт .ps1 не запускаетсяGet-ExecutionPolicy, Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
curl ведёт себя странно в CMDВ PowerShell curl — псевдоним Invoke-WebRequest; для классического curl: curl.exe

Совместимость

ОбластьПримечание
ВерсииWindows 10/11 и актуальные серверные релизы; PowerShell 5.1 встроен, PowerShell 7+ (pwsh) — отдельная установка
Платформыофициальная матрица поддержки вендора
СтандартыRFC, ISO, спецификация API — см. таблицы выше

Основа по протоколу

Базовый разбор HTTP и HTTPS находится в отдельной статье — HTTP как основа веб-интеграций.


В подборках

Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:

СправочникиОсновные команды в Linux, Справочник по эмодзи, Справочник по HTTP-протоколу, Справочник по XML, Основы IP-адресации, Справочник по XSLT.