Шпаргалка

Команды PowerShell, нужные каждый день

Не справочник на тысячи командлетов, а рабочий минимум админа: службы, процессы, файлы, сеть, журналы и домен. Каждую стоит выполнить один раз руками — запоминаются они сами, потому что построены по одной логике.

Службы и процессы

Get-Service                          # все службы и их состояние
Get-Service | Where Status -eq 'Stopped'   # только остановленные
Restart-Service Spooler              # перезапустить (печать, классика)
Set-Service W32Time -StartupType Automatic # автозапуск службе времени
Get-Process | Sort CPU -Desc | Select -First 5  # топ-5 по процессору
Stop-Process -Name notepad           # закрыть процесс по имени

Файлы и диски

Get-ChildItem C:\Logs -Recurse       # содержимое с подпапками (аналог ls/dir)
Get-ChildItem C:\Logs | Where Length -gt 100MB  # файлы тяжелее 100 МБ
Copy-Item конфиг.xml конфиг.bak      # копия перед правкой
Get-Content журнал.log -Tail 20 -Wait  # хвост файла вживую (аналог tail -f)
Get-Volume                           # диски и свободное место
Select-String -Path *.log -Pattern "ошибка"  # поиск по файлам (аналог grep)

Сеть

Get-NetIPAddress -AddressFamily IPv4  # адреса интерфейсов
Test-NetConnection ya.ru              # ping с разбором: DNS + доступность
Test-NetConnection srv-01 -Port 3389  # открыт ли порт (RDP на сервере?)
Get-NetTCPConnection -State Listen    # кто слушает какие порты
Clear-DnsClientCache                  # сброс кеша DNS (ipconfig /flushdns)

Test-NetConnection с портом — команда, которую стоит выучить первой: она отвечает на половину сетевых вопросов «не работает — это сеть или служба?». Как читать её ответы, помогает понять ликбез про DNS и DHCP.

Журналы событий

Get-WinEvent -LogName System -MaxEvents 20   # последние события системы
Get-WinEvent -FilterHashtable @{LogName='System'; Level=2} -MaxEvents 20
                                     # только ошибки (Level 2)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 10
                                     # неудачные входы: кто ломится

Active Directory (на сервере или с RSAT)

Get-ADUser -Filter * -SearchBase "OU=Buhgalteria,DC=firma,DC=local"
                                     # пользователи подразделения
Get-ADUser ivanov -Properties LockedOut,PasswordExpired  # что с учёткой
Unlock-ADAccount ivanov              # разблокировать после неверных паролей
Add-ADGroupMember Buhgalteria -Members ivanov  # добавить в группу

Как учить, чтобы осталось в руках

Логика «Глагол-Существительное» делает PowerShell угадываемым: Get — посмотреть, Set — изменить, Restart — перезапустить. Не знаешь команду — спроси систему: Get-Command *service*, а справку по любой даст Get-Help с ключом -Examples. Основы конвейера и первый скрипт разобраны в статье для начинающих; безопасный полигон — домашний стенд. На курсе Windows и Linux все эти команды встречаются внутри задач: настроить, найти причину, починить.

{ Освоить PowerShell на задачах курса }

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

Почему у меня «не является командлетом»?

Либо опечатка (проверь через Get-Command), либо команда из модуля, которого нет: AD-команды, например, требуют роли сервера или установленных средств RSAT на рабочей станции.

PowerShell 5 или PowerShell 7 — какой учить?

Разница для базовых команд минимальна. В Windows встроен 5.1 — начинай с него; седьмой ставится рядом и понадобится позже, когда дойдёшь до кроссплатформенных скриптов.

Есть ли аналог этой шпаргалки для Linux?

Да, устроена так же: команды Linux на каждый день. Полезно держать обе: в смешанной инфраструктуре переключаться приходится по десять раз на дню.

Куда дальше