Терминал Windows: PowerShell

Что вы получите, освоив PowerShell вместо обычной командной строки?
PowerShell — это не просто «улучшенный cmd». Это полноценная среда автоматизации, встроенная в Windows. Вы перестанете тратить часы на однотипные клики мышью: массовое переименование 200 файлов, смена атрибутов у папок, управление службами — всё решается одной строкой. Главное отличие от cmd — работа с объектами, а не с текстом. Вы получаете не «мусорный вывод», а готовые структуры данных, которые можно сразу фильтровать, сортировать и передавать другой команде.
Конкретная выгода: типичная задача «найти все файлы размером более 1 ГБ и переместить их в архив» в проводнике займет 20 минут ручного отбора. В PowerShell это одна команда Get-ChildItem -Recurse -File | Where-Object {$_.Length -gt 1GB} | Move-Item -Destination D:\Archive. После прочтения этого раздела вы сможете написать её сами за 30 секунд.
Топ-5 реальных задач, которые PowerShell решает мгновенно
Вот конкретные сценарии, с которыми сталкивается каждый IT-специалист или продвинутый пользователь. Каждый пункт содержит готовую команду и объяснение, что вы экономите.
- Массовое переименование файлов по шаблону. Допустим, нужно добавить дату в название 500 отчетов. Команда:
Get-ChildItem *.txt | Rename-Item -NewName {$_.BaseName + '-' + (Get-Date -Format 'yyyyMMdd') + $_.Extension}. Результат: 3 секунды вместо 2 часов ручного труда. - Полная очистка временных файлов системы. Вместо ручного копания в Temp и кэше браузеров — команда-однострочник. Функция
CleanMgr /sageset:1+ вызов черезStart-Process. Экономия: от 15 минут на каждой чистке (плюс шанс что-то не забыть). - Проверка и установка обновлений через сервер.
Get-WindowsUpdate(требуется модуль PSWindowsUpdate). Больше не нужно ждать, пока «Параметры» загрузятся. Прямой контроль над тем, какие пакеты ставить, а какие нет. - Экспорт списка установленных программ в CSV.
Get-WmiObject -Class Win32_Product | Select-Object Name, Version, Vendor | Export-Csv C:\programs.csv. Единый отчет для аудита ПО на 100 машинах. Ручной сбор данных по надстройкам «Установка и удаление программ» занял бы день. - Массовое создание пользователей в Active Directory (для админов сетей). Команда
New-ADUser -Name 'Иванов Иван' -GivenName Иван -Surname Иванов -SamAccountName ivanov_i -UserPrincipalName ivanov_i@domain.ru -Path 'OU=Users,DC=domain,DC=ru' -AccountPassword (ConvertTo-SecureString 'P@ssw0rd' -AsPlainText -Force) -Enabled $true. Скорость: создание 50 учеток — менее минуты вместе с проверкой.
Почему Adobe Flash и старые курсы по cmd — бесполезны? Типичные ошибки новичков
Многие пользователи начинают с устаревших источников: изучают «команды MS-DOS» или читают курсы 2015 года. Главная ошибка: пытаться перетащить синтаксис cmd (bat-файлы) в PowerShell. Это приводит к тому, что скрипты работают некорректно или выдают кучу ошибок.
Вот три конкретные проблемы и их решения, которые вы встретите:
- Ошибка «Access Denied» при запуске скрипта. По умолчанию PowerShell блокирует исполнение неподписанных скриптов (политика Restricted). Решение:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. Это разрешит локальные скрипты, не нарушая безопасность. Никогда не ставьтеUnrestricted— это опасно. - Использование «echo» вместо «Write-Output».
echoв PowerShell — это псевдоним, который ведет себя не так, как в cmd. Для вывода в консоль используйтеWrite-OutputилиWrite-Host(для цветного текста). Иначе вы получите непредсказуемое поведение в конвейере. - Ожидание, что «dir» выведет список, как в cmd.
dirв PowerShell — псевдонимGet-ChildItem. Да, он показывает файлы. Но чтобы работать с датами, размерами или правами доступа, нужно осознанно использовать свойства объектов. Просто переписав старый батник на «dir *.txt > log.txt», вы получите файл с текстом, а не объектами. Для современных задач нуженExport-Csv.
Пошаговое руководство по первому скрипту: мониторинг места на дисках с уведомлением
Вместо абстрактной теории — готовое решение, которое вы запустите прямо сейчас. Этот скрипт проверяет свободное место на всех жестких дисках и, если на каком-то диске остается менее 10%, выводит предупреждение с красной подсветкой.
Как получить результат: откройте PowerShell (просто наберите «PowerShell» в пуске, правый клик — «Запуск от имени администратора»). Скопируйте код ниже и вставьте. Вы сразу увидите таблицу с дисками, а «опасные» диски будут выделены.
Get-PSDrive -PSProvider FileSystem | Where-Object {$_.Used -gt 0} | ForEach-Object { [PSCustomObject]@{ Буква = $_.Name ВсегоГБ = [math]::Round($_.Used/1GB, 2) СвободноГБ = [math]::Round($_.Free/1GB, 2) ПроцентСвободно = [math]::Round(($_.Free / ($_.Used + $_.Free)) * 100, 1) } } | Sort-Object ПроцентСвободно | ForEach-Object { if ($_.ПроцентСвободно -le 10) { Write-Host "ВНИМАНИЕ! Диск $($_.Буква): свободно $($_.ПроцентСвободно)%" -ForegroundColor Red } else { $_ } }Что вы получаете: моментальный отчет по всем дискам (C:, D: и т.д.) с точностью до десятых процента. Если добавить этот код в планировщик задач Windows и настроить отправку письма (Send-MailMessage), то вы узнаете о проблеме до того, как система «загрузится» и начнет тормозить.
Как автоматизировать рутинные операции в Active Directory и настройку новых сотрудников
Для системных администраторов PowerShell — это спасение. Вы можете сократить время настройки рабочего места новичка с 40 минут до 5. Вместо того чтобы заходить в оснастки, кликать 20 раз и ждать загрузки каждого окна, пишется один блок команд.
Пример типового «приветственного» скрипта для нового пользователя:
- Создание учетной записи:
New-ADUser -Name "$Name" -GivenName $Name -SamAccountName $Login -UserPrincipalName "$Login@company.ru" -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -PassThru | Add-ADGroupMember -Members $_.DistinguishedName -Identity 'Domain Users' - Создание домашней папки:
New-Item -Path "\\server\users\$Login" -ItemType Directory; Set-ACL -Path "\\server\users\$Login" -AclObject (Get-ACL -Path '\\server\users\_template') - Монтирование сетевого диска:
New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\server\users\$Login" -Persist - Отправка приветственного письма с логином/паролем:
Send-MailMessage -To $UserEmail -Subject 'Ваш аккаунт создан' -Body "Логин: $Login`nПароль: $Password" -SmtpServer mail.company.ru
Итог: вы не забываете ни одного шага (пароль сгенерирован, почта отправлена). Нет риска «человеческого фактора». Скрипт можно дать стажеру, и он не ошибется. Экономия времени на одного сотрудника — до 30 минут.
Проверка безопасности скрипта: что нельзя делать и как защитить систему
Критический раздел для всех, кто не хочет, чтобы скрипт «уронил» сервер. Самая частная ошибка новичков — запуск скриптов из ненадежных источников (скачали с форума «супер-очиститель», запустили от администратора, получили вирус-шифровальщик).
Правило №1: никогда не используйте Invoke-Expression (Get-Content .\file.txt) для исполнения кода из текстового файла или буфера обмена. Это прямой путь к заражению. Вместо этого, если нужно выполнить код, сохраните его в .ps1 файл, посмотрите содержимое через Get-Content filename.ps1 (если файл подозрительный — не запускайте).
Правило №2: используйте режим Constrained Language Mode для скриптов от сторонних разработчиков. Это ограничивает вызовы Win32 API и COM-объектов. Включить: New-Item -Path $env:SYSTEMROOT\System32\WindowsPowerShell\v1.0\PowerShell.exe -Name '__PSLockdownPolicy__' -ItemType File. После этого скрипты не смогут обращаться к критичным функциям системы.
Правило №3: логируйте всё. Включите журнал PowerShell (Script Block Logging). Это делается через групповые политики: Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell -> Turn on PowerShell Script Block Logging. Вы будете видеть, какие команды кто выполнял. Это спасёт от «случайного» удаления базы данных.
Почему не стоит переплачивать за «надстройки» и графические утилиты, если есть PowerShell?
Microsoft постоянно встраивает функции администрирования в PowerShell. Многие коммерческие утилиты просто оборачивают команды PowerShell в графический интерфейс. Вы платите 5000 рублей в год за то, что могли бы сделать бесплатно за 10 строк кода.
Конкретный пример: менеджер дисков (Disk Management). Утилиты типа «MiniTool Partition Wizard» за $59 делают то же самое, что и команда Resize-Partition -DriveLetter C -Size (Get-Partition -DriveLetter C | Select-Object -ExpandProperty Size) -Size 100GB. Разница — в скорости. PowerShell делает операцию без перезагрузок в 90% случаев (для базовых задач), а GUI-утилита часто требует два клика и ожидание. Экономия прямая: не платить за Overkill-софт.
Добавлено: 07.05.2026
