Автоматизация

PowerShell для начинающих

Windows управляется командами не хуже Linux, просто про это меньше говорят. PowerShell — язык, на котором админ спрашивает систему о чём угодно и меняет что угодно, на одной машине или на сотне сразу.

Одна логика на все команды

Главная удача PowerShell: команды не надо запоминать, их можно угадывать. Каждая построена как «Глагол-Существительное»: Get — получить, Set — изменить, Stop — остановить. Хочешь службы — Get-Service. Процессы — Get-Process. Не знаешь команду — спроси систему: Get-Command *user*.

Get-Service                        # все службы и их состояние
Get-Service -Name Spooler          # одна служба (печать)
Restart-Service Spooler            # перезапустить — лечит половину проблем с печатью
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
                                   # топ-5 процессов по процессору

Конвейер: передаются объекты, не текст

Символ | передаёт результат следующей команде, как в bash. Разница принципиальная: по конвейеру идут не строки, а объекты со свойствами. Не нужно выпиливать колонку текстовыми ножницами — обращаешься к свойству по имени:

Get-Service | Where-Object Status -eq 'Stopped'
                                   # только остановленные службы
Get-ChildItem C:\Logs | Where-Object Length -gt 100MB
                                   # файлы логов тяжелее 100 МБ
Get-WinEvent -LogName System -MaxEvents 20
                                   # последние 20 событий системного журнала

Первый полезный скрипт

Отчёт о свободном месте на дисках — файл disk-report.ps1:

# disk-report.ps1 — свободное место по всем дискам
Get-Volume | Where-Object DriveLetter |
    Select-Object DriveLetter,
        @{n='СвободноГБ'; e={[math]::Round($_.SizeRemaining/1GB,1)}},
        @{n='ВсегоГБ';    e={[math]::Round($_.Size/1GB,1)}}

В доменной среде тот же язык управляет Active Directory: Get-ADUser выгружает пользователей, New-ADUser заводит новых пачкой из таблицы. Это уже уровень задач, за которые доплачивают.

Как учить

Так же, как терминал Linux: по полчаса в день на виртуальной машине, на своих задачах. Начни с Get-команд — они ничего не меняют и безопасны. Параллель с bash помогает: выучив одну оболочку, вторую берёшь за неделю, у нас есть такой же разбор по bash. На курсе Windows и Linux обе оболочки идут в связке с задачами стенда.

{ Освоить администрирование Windows }

Частые вопросы

Чем PowerShell отличается от cmd?

Cmd — старая оболочка с двумя десятками команд, живёт для совместимости. PowerShell — полноценный инструмент управления системой; всё новое в Windows администрируется им.

Почему мой скрипт не запускается?

Скорее всего, политика выполнения: по умолчанию Windows запрещает запуск скриптов. Для своей машины её смягчают командой Set-ExecutionPolicy RemoteSigned от администратора. Это первый вопрос каждого новичка, теперь ты знаешь ответ заранее.

Нужен ли PowerShell для первой работы?

Уметь выполнить Get-команды и прочитать чужой скрипт — да. Писать модули — нет. В чек-листе навыков он идёт строчкой «автоматизация рутины», наравне с bash.

Куда дальше