PowerShell изменила то, как пользователи Windows работают со своими операционными системами, превратив сложные административные задачи в простые автоматизированные процессы12. Если вы системный администратор, ИТ-специалист или обычный пользователь Windows, который хочет повысить производительность, освоение основных команд PowerShell сэкономит вам бесчисленные часы и откроет мощные возможности автоматизации34.
Это подробное руководство охватывает самые важные команды PowerShell, которые должен освоить каждый пользователь Windows — от базовой навигации до продвинутого управления системой. К концу руководства вы будете уверенно использовать мощные возможности PowerShell в повседневных задачах.
Содержание
- Что такое PowerShell и почему это важно?
- С чего начать: запуск PowerShell
- Основные команды поиска: ваш компас в PowerShell
- Команды управления файлами и папками
- Сведения о системе и управление процессами
- Команды диагностики сети
- Команды работы с содержимым и данными
- Работа с конвейерами PowerShell
- Управление временем и датой
- Основные рекомендации по работе с PowerShell
- Создание первого скрипта PowerShell
- Продвинутый путь изучения PowerShell
- Решение типичных проблем PowerShell
- Заключение: больше возможностей в Windows
Что такое PowerShell и почему это важно?
PowerShell — это мощная оболочка командной строки и среда для написания скриптов которая предустановлена во всех современных операционных системах Windows2. В отличие от традиционной командной строки, PowerShell использует структуру синтаксиса «глагол — существительное» которая делает команды интуитивно понятными и удобочитаемыми1. Например, Get-Process получает список запущенных процессов, а Stop-Service останавливает системные службы.
Ключевые преимущества PowerShell перед командной строкой
PowerShell даёт заметные преимущества по сравнению с традиционным интерфейсом командной строки1:
- Объектный вывод: вместо обычного текста PowerShell работает со структурированными объектами, содержащими свойства и методы
- Продвинутые возможности написания скриптов: создавайте сложные скрипты автоматизации с циклами, условиями и функциями
- Расширяемость через модули: добавляйте функциональность с помощью библиотек .NET и собственных командлетов
- Поддержка конвейеров: объединяйте команды в цепочки для эффективной обработки данных
- Кроссплатформенность: запускайте PowerShell в Windows, Linux и macOS
С чего начать: запуск PowerShell
Прежде чем переходить к командам, нужно узнать, как запустить PowerShell25. В Windows 11 проще всего сделать так:
- Введите “PowerShell” в строке поиска Windows
- Щёлкните правой кнопкой мыши по “Windows PowerShell”
- Выберите “Запуск от имени администратора” чтобы получить повышенные права
Для большинства административных задач запуск PowerShell от имени администратора обеспечивает необходимые разрешения для выполнения команд системного уровня.
Основные команды поиска: ваш компас в PowerShell
1. Get-Help: встроенное руководство
Этот Get-Help , пожалуй, самая важная команда PowerShell которую вы когда-либо изучите467. Она предоставляет подробную документацию по любому командлету, функции или понятию в PowerShell.
Базовый синтаксис:
powershellGet-Help <cmdlet-name>
Практические примеры:
powershell# Базовая справка по команде
Get-Help Get-Process
# Подробная справка с примерами
Get-Help Get-Process -Full
# Только примеры
Get-Help Get-Process -Examples
# Открыть онлайн-документацию
Get-Help Get-Process -Online
Совет: Используйте Update-Help периодически, чтобы у вас всегда была актуальная справка6.
2. Get-Command: поиск доступных команд
Когда вы не знаете, какую команду использовать, Get-Command помогает найти подходящий командлет для вашей задачи486.
Полезные шаблоны:
powershell# Список всех доступных команд
Get-Command
# Найти команды, начинающиеся с "Get"
Get-Command Get-*
# Найти команды, содержащие "Process"
Get-Command *Process*
# Найти команды для конкретных действий
Get-Command Start-*
Get-Command Stop-*
Этот подход особенно полезен, когда вы знаете, какое действие хотите выполнить, но не уверены в точном названии команды.
3. Get-Member: изучение свойств объектов
PowerShell работает с объектами, и Get-Member показывает, какие свойства и методы доступны у любого объекта6.
powershell# Свойства объектов процессов
Get-Process | Get-Member
# Свойства объектов служб
Get-Service | Get-Member
Команды управления файлами и папками
4. Get-ChildItem: просмотр содержимого каталога
Get-ChildItem является аналогом команды dir команды, но с гораздо большими возможностями1910.
Обычное использование:
powershell# Содержимое текущего каталога
Get-ChildItem
# Список вместе со скрытыми файлами
Get-ChildItem -Force
# Рекурсивный список (включая подкаталоги)
Get-ChildItem -Recurse
# Фильтр по типу файла
Get-ChildItem *.txt
# Поиск файлов в подкаталогах
Get-ChildItem -Path C:\Users -Include *.pdf -Recurse
Псевдонимы: Можно также использовать ls, dir, или gci как сокращения10.
5. Set-Location: переход по каталогам
Эффективно перемещайтесь по файловой системе с помощью Set-Location10.
powershell# Перейти в указанный каталог
Set-Location C:\Users\Documents
# Перейти в родительский каталог
Set-Location ..
# Вернуться в предыдущее место
Set-Location -
# Переход с помощью псевдонимов
cd C:\Windows
sl C:\Temp
6. Copy-Item: копирование файлов и папок
Этот Copy-Item предоставляет широкие возможности копирования файлов910.
powershell# Копировать один файл
Copy-Item "source.txt" "destination.txt"
# Копирование с защитой от перезаписи
Copy-Item "source.txt" "backup.txt" -Force
# Копировать целые каталоги
Copy-Item "C:\Source" "C:\Backup" -Recurse
# Копировать несколько файлов по маске
Copy-Item "*.log" "C:\Logs\"
7. Move-Item: перемещение и переименование файлов
Используйте Move-Item для перемещение и переименование файлов и папок1112.
powershell# Переместить файл в другое расположение
Move-Item "oldfile.txt" "C:\NewLocation\"
# Переименовать файл
Move-Item "oldname.txt" "newname.txt"
# Переместить все файлы заданного типа
Get-ChildItem *.txt | Move-Item -Destination "C:\TextFiles\"
8. Remove-Item: удаление файлов и папок
Безопасное удаление файлов и каталогов с Remove-Item10.
powershell# Удалить один файл
Remove-Item "unwanted.txt"
# Удалить с подтверждением
Remove-Item "important.txt" -Confirm
# Удалить каталоги рекурсивно
Remove-Item "C:\TempFolder" -Recurse -Force
# Удалить файлы по шаблону
Remove-Item "*.tmp"
Предупреждение: Будьте предельно осторожны с Remove-Item, особенно в сочетании с -Recurse и -Force параметрами: удалённые файлы может быть невозможно восстановить.
9. New-Item: создание файлов и каталогов
Быстро создавайте новые файлы и папки с помощью New-Item1013.
powershell# Создать новый каталог
New-Item -Name "NewFolder" -ItemType Directory
# Создать новый файл
New-Item -Name "newfile.txt" -ItemType File
# Создать файл с содержимым
New-Item "readme.txt" -ItemType File -Value "This is initial content"
# Создать вложенные каталоги
New-Item "C:\Projects\NewProject\Source\" -ItemType Directory -Force
Сведения о системе и управление процессами
10. Get-Process: мониторинг запущенных процессов
Get-Process предоставляет подробную информацию о запущенных процессах в вашей системе34.
powershell# Показать все запущенные процессы
Get-Process
# Получить конкретный процесс по имени
Get-Process notepad
# Получить процессы по маске
Get-Process note*
# Отсортировать процессы по нагрузке CPU
Get-Process | Sort-Object CPU -Descending
# Получить 10 процессов с наибольшим потреблением памяти
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10
11. Stop-Process: завершение процессов
Останавливайте зависшие или ненужные процессы с Stop-Process4.
powershell# Остановить процесс по имени
Stop-Process -Name "notepad"
# Остановить процесс по ID
Stop-Process -Id 1234
# Остановить с подтверждением
Stop-Process -Name "chrome" -Confirm
# Принудительно остановить зависшие процессы
Stop-Process -Name "application" -Force
12. Get-Service: управление службами Windows
Отслеживайте и управляйте службами Windows которые работают в фоновом режиме41415.
powershell# Показать все службы
Get-Service
# Получить службы по статусу
Get-Service | Where-Object Status -eq "Running"
# Получить конкретную службу
Get-Service -Name "Spooler"
# Получить службы, начинающиеся с определённых букв
Get-Service -Name "Win*"
13. Start-Service и Stop-Service: управление службами
Запускайте и останавливайте службы Windows по мере необходимости1415.
powershell# Запустить службу
Start-Service -Name "Spooler"
# Остановить службу
Stop-Service -Name "Spooler"
# Перезапустить службу
Restart-Service -Name "Spooler"
# Запустить несколько служб
Get-Service -Name "BITS", "Spooler" | Start-Service
Команды диагностики сети
14. Test-NetConnection: проверка сетевого подключения
Test-NetConnection это улучшенная версия ping в PowerShell с дополнительными возможностями1617.
powershell# Простая проверка подключения
Test-NetConnection google.com
# Проверить конкретный порт
Test-NetConnection google.com -Port 80
# Трассировать маршрут до пункта назначения
Test-NetConnection google.com -TraceRoute
# Проверить несколько подключений
"google.com", "microsoft.com" | ForEach-Object { Test-NetConnection $_ }
15. Get-NetIPAddress: просмотр конфигурации IP
Проверьте вашу конфигурацию IP-сети с Get-NetIPAddress1617.
powershell# Вывести все IP-адреса
Get-NetIPAddress
# Показать только адреса IPv4
Get-NetIPAddress -AddressFamily IPv4
# Получить сведения о конкретном адаптере
Get-NetIPAddress -InterfaceAlias "Ethernet"
16. Resolve-DnsName: проверка разрешения DNS
Проверяйте разрешение DNS и запрашивайте сведения о домене16.
powershell# Базовый запрос DNS
Resolve-DnsName google.com
# Запрос определённых типов записей
Resolve-DnsName google.com -Type MX
# Использование конкретного DNS-сервера
Resolve-DnsName google.com -Server 8.8.8.8
Команды работы с содержимым и данными
17. Get-Content: чтение содержимого файла
Чтение и отображение содержимого файла напрямую в PowerShell1819.
powershell# Показать всё содержимое файла
Get-Content "logfile.txt"
# Прочитать заданное число строк
Get-Content "bigfile.txt" -Head 10
# Отслеживать изменения файла (как tail -f)
Get-Content "live.log" -Wait
# Прочитать последние строки
Get-Content "recent.log" -Tail 20
18. Out-File: экспорт вывода в файлы
Сохранение вывода команды в файлы для последующего анализа619.
powershell# Сохранить список процессов в файл
Get-Process | Out-File "processes.txt"
# Дописать в существующий файл
Get-Date | Out-File "log.txt" -Append
# Сохранить с заданной кодировкой
Get-Service | Out-File "services.txt" -Encoding UTF8
19. Select-Object: фильтрация и форматирование вывода
Управление тем, какая информация отображается в результатах команды2021.
powershell# Показать только определённые свойства
Get-Process | Select-Object Name, CPU, WorkingSet
# Получить первые несколько результатов
Get-ChildItem | Select-Object -First 5
# Выбрать уникальные значения
Get-Process | Select-Object ProcessName -Unique
Работа с конвейерами PowerShell
20. Where-Object: фильтрация результатов
Фильтрация результатов команды по заданным критериям2021.
powershell# Отфильтровать работающие службы
Get-Service | Where-Object Status -eq "Running"
# Отфильтровать большие файлы
Get-ChildItem | Where-Object Length -gt 1MB
# Сложная фильтрация с несколькими условиями
Get-Process | Where-Object {$_.CPU -gt 100 -and $_.WorkingSet -gt 50MB}
21. Sort-Object: сортировка результатов
Упорядочивание вывода по возрастанию или убыванию21.
powershell# Сортировать процессы по имени
Get-Process | Sort-Object Name
# Сортировать по нескольким свойствам
Get-ChildItem | Sort-Object LastWriteTime, Name
# Сортировка по убыванию
Get-Process | Sort-Object CPU -Descending
22. ForEach-Object: обработка каждого элемента
Выполнение действий с каждым объектом в конвейере1921.
powershell# Process each file
Get-ChildItem *.txt | ForEach-Object {
Write-Host "Processing: $($_.Name)"
}
# Modify each object
Get-Service | ForEach-Object {
"$($_.Name): $($_.Status)"
}
Управление временем и датой
23. Get-Date: работа с датой и временем
Получение и форматирование текущих даты и времени19.
powershell# Получить текущую дату и время
Get-Date
# Отформатировать дату нужным образом
Get-Date -Format "yyyy-MM-dd HH:mm:ss"
# Получить компоненты даты
(Get-Date).DayOfWeek
(Get-Date).Year
# Вычислить будущие даты
(Get-Date).AddDays(30)
Основные рекомендации по работе с PowerShell
Используйте автодополнение по Tab
PowerShell функция автодополнения по Tab заметно ускоряет ввод команд17. Нажмите Tab после ввода части имени команды, параметра или пути к файлу, чтобы дополнить их автоматически.
Используйте псевдонимы
PowerShell включает множество встроенных псевдонимов для распространённых команд5:
lsилиdirдляGet-ChildItemcdдляSet-LocationcatилиtypeдляGet-ContentrmилиdelдляRemove-Item
Проверяйте команды безопасно
Перед запуском потенциально разрушительных команд используйте -WhatIf параметр, чтобы увидеть, что произойдёт, без фактического выполнения команды12:
powershellRemove-Item *.txt -WhatIf
Stop-Service Spooler -WhatIf
Настройте политику выполнения
Из соображений безопасности PowerShell по умолчанию ограничивает выполнение сценариев22. Чтобы запускать сценарии, возможно, потребуется изменить политику выполнения:
powershell# Проверить текущую политику
Get-ExecutionPolicy
# Задать политику для текущего пользователя
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Создание первого скрипта PowerShell
Когда вы освоитесь с отдельными командами, вы можете объединить их в скрипты для автоматизации2223. Вот простой пример:
powershell# Сохранить как system-info.ps1
Write-Host "System Information Report" -ForegroundColor Green
Write-Host "=========================" -ForegroundColor Green
Write-Host "`nCurrent Date and Time:" -ForegroundColor Yellow
Get-Date
Write-Host "`nTop 5 Processes by CPU:" -ForegroundColor Yellow
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Write-Host "`nRunning Services Count:" -ForegroundColor Yellow
(Get-Service | Where-Object Status -eq "Running").Count
Write-Host "`nDisk Usage:" -ForegroundColor Yellow
Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}}, @{Name="FreeSpace(GB)";Expression={[math]::Round($_.FreeSpace/1GB,2)}}
Продвинутый путь изучения PowerShell
Освоив эти основные команды, подумайте об изучении следующих продвинутых тем24:
- Управление Active Directory с командлетами AD
- Удалённое администрирование компьютеров с помощью PowerShell remoting
- Автоматическое планирование задач с помощью сценариев PowerShell
- Обработка ошибок и ведение журнала в сценариях
- Модули и функции PowerShell для повторного использования кода
Решение типичных проблем PowerShell
Ошибки политики выполнения
Если вы получаете ошибки “execution of scripts is disabled”, проверьте политику выполнения и измените её22:
powershellGet-ExecutionPolicy -List
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Ошибки отказа в доступе
Многие административные задачи требуют повышенных прав. Всегда запускайте PowerShell от имени администратора, когда работаете с:
- Системные службы
- Изменение реестра
- Настройки сети
- Управление учётными записями пользователей
Проблемы с путями и текущим расположением
Если команды не находят файлы или каталоги, проверьте текущее расположение и используйте полные пути:
powershellGet-Location
Set-Location C:\YourDesiredPath
Заключение: больше возможностей в Windows
Освоение этих основных команд PowerShell превращает вас из пассивного пользователя Windows в активного системного администратора, способного автоматизировать сложные задачи и эффективно решать проблемы13. «глагол-существительное» делает PowerShell интуитивно понятным в изучении, а мощные возможности конвейера позволяют выполнять сложную обработку данных и управление системой24.
Начните с практики этих команд в безопасной среде, постепенно наращивая уверенность и переходя к более сложным сценариям. Помните, что Get-Help всегда доступна и даёт подробные сведения о любой команде, а автодополнение по Tab делает ввод команд быстрее и точнее725.
Управляете ли вы файлами, следите за производительностью системы, устраняете сетевые проблемы или автоматизируете повторяющиеся задачи — PowerShell даёт инструменты, которые нужны для более эффективной работы с системами Windows17. Вложения в изучение PowerShell окупаются ростом производительности и расширенными возможностями администрирования системы, которые будут приносить пользу на протяжении всей вашей карьеры в ИТ.
