Основные команды 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 | Назначение |
|---|---|---|
dir | Get-ChildItem | Список файлов и папок |
cd | Set-Location | Перейти в другую директорию |
cd (без аргументов) / echo %CD% | Get-Location / pwd | Показать текущую директорию |
md, mkdir | New-Item -ItemType Directory | Создать директорию |
rd /s /q | Remove-Item -Recurse -Force | Удалить папку рекурсивно |
copy | Copy-Item | Копировать файлы |
del | Remove-Item | Удалить файл |
ren | Rename-Item | Переименовать файл или папку |
move | Move-Item | Переместить файлы |
type | Get-Content | Прочитать содержимое файла |
findstr | Select-String | Искать текст в файле |
icacls | Get-Acl / icacls | Права доступа (ACL) |
wmic logicaldisk … | Get-PSDrive | Информация о дисках |
tasklist | Get-Process | Список процессов |
taskkill | Stop-Process | Остановить процесс |
ping | Test-Connection | Проверить связь |
curl | Invoke-WebRequest | HTTP-запрос |
| — | Invoke-WebRequest -OutFile | Скачать файл (предпочтительно вместо bitsadmin) |
shutdown | Stop-Computer | Выключить компьютер |
shutdown /r | Restart-Computer | Перезагрузить |
set | Get-ChildItem Env: | Переменные окружения |
set VAR=… | $env:VAR = "…" | Задать переменную |
doskey /history | Get-History | История команд |
help команда | Get-Help | Справка |
where | Get-Command | Путь к исполняемому файлу |
hostname | $env:COMPUTERNAME | Имя компьютера |
tree | Get-ChildItem -Recurse | Дерево каталогов |
dir /s *.txt | Get-ChildItem -Recurse | Поиск файлов |
cls | Clear-Host | Очистить терминал |
type nul > file.txt | New-Item file.txt | Пустой файл |
mklink | New-Item -ItemType SymbolicLink | Символическая ссылка |
| — | Expand-Archive | Распаковать zip |
| — | winget install | Установить программу |
| — | Start-Process -Verb RunAs | Запуск от администратора |
whoami | whoami | Имя пользователя |
net user | whoami /groups | Группы пользователя |
net start | Start-Service | Запустить службу |
sc config … start= disabled | Set-Service -StartupType Disabled | Отключить автозапуск службы |
sc config … start= demand | Set-Service -StartupType Manual | Ручной запуск службы |
eventvwr | Get-WinEvent / Get-EventLog | Журналы событий |
date | Get-Date | Дата и время |
ipconfig | Get-NetIPConfiguration | Сетевые настройки |
netstat -ano | Get-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
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.