PowerShell: Корисні скрипти, які знадобляться кожному

event 16.03.2026 10:00
| category DevOps | person iron_will | comment 0 | visibility 71 | |

PowerShell уже давно перестав бути просто оболонкою для адміністрування Windows. Сьогодні це повноцінна платформа для автоматизації рутинних задач, управління інфраструктурою та інтеграції з різними сервісами. Незалежно від того, чи ви системний адміністратор, DevOps-інженер, або просто активно працюєте з Windows-системами, знання корисних скриптів PowerShell значно спрощує роботу та підвищує ефективність.

У цій статті ми розглянемо набір практичних скриптів, які допоможуть у повсякденних завданнях — від роботи з файлами та процесами до моніторингу системи та управління користувачами Active Directory. Кожен приклад супроводжується поясненням і кейсом застосування, щоб ви могли відразу інтегрувати їх у свій робочий процес.

Мета цього матеріалу - не просто надати готові команди, а пояснити, як вони працюють, щоб ви могли модифікувати та розширювати їх під власні потреби. Використовуючи наведені приклади, ви зможете економити час, уникати ручних помилок і швидко автоматизувати повторювані операції.

Основи роботи з PowerShell

Перед тим як переходити до практичних скриптів, важливо розуміти базові принципи PowerShell:

  1. Об’єктна модель - PowerShell працює з об’єктами .NET, а не просто з текстом, що дозволяє легко фільтрувати, сортувати та трансформувати дані.

  2. Команди Cmdlet - стандартні команди PowerShell, які виконують конкретні завдання, наприклад Get-Process або Get-Service.

  3. Пайплайн (Pipeline) - механізм передачі об’єктів між командами через |, що дозволяє будувати складні сценарії обробки даних.

  4. Скрипти та модулі - для повторного використання логіки можна створювати скрипти .ps1 або пакувати функції у модулі .psm1.

Робота з файлами та папками

PowerShell надає потужні засоби для роботи з файловою системою. Наведемо кілька прикладів.

Пошук та фільтрація файлів

# Пошук всіх файлів .log старше 30 днів
Get-ChildItem -Path "C:\Logs" -Recurse -Filter "*.log" |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }

Пояснення:

  • Get-ChildItem рекурсивно проходить всі підпапки.

  • Where-Object фільтрує файли за датою останньої зміни.

Автоматичне видалення старих файлів

# Видалення файлів старше 30 днів
Get-ChildItem "C:\Temp" -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item -Force

Кейс:
Цей скрипт зручно використовувати для очищення тимчасових директорій або архівів логів, щоб уникнути заповнення диску.

Управління процесами та сервісами

PowerShell дозволяє отримувати інформацію про процеси, завершувати їх та керувати службами.

Перегляд ресурсів процесів

# Сортування процесів за використанням пам'яті
Get-Process | Sort-Object -Property WorkingSet -Descending | Select-Object -First 10

Пояснення:
Цей скрипт показує 10 процесів, які споживають найбільше оперативної пам’яті. Зручно для швидкої діагностики навантаження на сервер.

Управління службами

# Перезапуск служби Windows Update
Restart-Service -Name wuauserv -Force

Кейс:
Корисно при автоматичному вирішенні проблем зі службами, які зависли або працюють некоректно.

Робота з мережевими ресурсами

Перевірка доступності хостів

$hosts = @("server01", "server02", "192.168.1.10")

foreach ($host in $hosts) {
if (Test-Connection -ComputerName $host -Count 2 -Quiet) {
Write-Host "$host доступний"
} else {
Write-Host "$host недоступний"
}
}

Пояснення:

  • Test-Connection — аналог команди ping.

  • Скрипт перебирає список хостів і виводить їх статус.

Моніторинг відкритих портів

# Перевірка порту 443 на сервері
Test-NetConnection -ComputerName "example.com" -Port 443

Цей скрипт дозволяє швидко перевіряти доступність конкретного сервісу без встановлення сторонніх утиліт.

Автоматизація роботи з Active Directory

Для адміністрування користувачів та груп у AD PowerShell незамінний.

Створення нового користувача

New-ADUser -Name "Ivan Petrov" -GivenName "Ivan" -Surname "Petrov" `
-Path "OU=Employees,DC=example,DC=com" -AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) `
-Enabled $true

Пояснення:

  • Створює нового користувача з заданим паролем і розташуванням у певному OU.

  • Використовує ConvertTo-SecureString для безпечного зберігання пароля.

Масове оновлення груп

# Додаємо користувачів у групу
Import-Csv "users.csv" | ForEach-Object {
Add-ADGroupMember -Identity "IT-Staff" -Members $_.SamAccountName
}

Кейс:
Швидкий спосіб оновити права доступу великої кількості співробітників.

Логування та автоматизація завдань

PowerShell дозволяє створювати сценарії автоматичного логування та моніторингу.

Логування змін у файлах

$path = "C:\Data"
$log = "C:\Logs\FileChanges.log"

Register-ObjectEvent -InputObject (Get-Item $path) -EventName "Changed" -Action {
$event = $Event.SourceEventArgs
Add-Content $log "$(Get-Date) - $($event.FullPath) змінено"
}

Пояснення:

  • Використовуємо події файлової системи для реєстрації змін.

  • Лог можна потім аналізувати для аудиту або відновлення.

Планування скриптів через Task Scheduler

# Створення задачі для щоденного запуску скрипта
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\Scripts\backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 02:00
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "DailyBackup" -Description "Щоденне резервне копіювання"

Кейс:
Повністю автоматизоване резервне копіювання без ручного втручання.

Практичні кейси

  1. Моніторинг серверів - об’єднання Get-Process, Get-Service та Test-NetConnection для автоматичного звіту про стан інфраструктури.

  2. Очищення тимчасових файлів - регулярний скрипт видалення старих .log і .tmp файлів для збереження дискового простору.

  3. Масові зміни в Active Directory - швидке оновлення груп і прав користувачів за допомогою CSV-файлів.

  4. Аудит та логування - автоматичне відстеження змін у критичних каталогах для контролю безпеки.

Висновки

PowerShell — універсальний інструмент для автоматизації адміністративних та DevOps-завдань. Його перевага полягає в об’єктній моделі та гнучкості: ви можете створювати прості команди або складні сценарії, інтегруючи їх з Windows, AD, мережею та зовнішніми сервісами.

Використання наведених у статті скриптів дозволяє:

  • зменшити ручну роботу та ризик помилок;

  • оптимізувати ресурси серверів;

  • швидко отримувати діагностичну інформацію;

  • автоматизувати рутинні процеси в IT-інфраструктурі.

Освоєння PowerShell і регулярне впровадження скриптів у робочі процеси підвищує ефективність команди та робить адміністрування більш передбачуваним і контрольованим.

Related posts

Kubernetes: сучасна платформа оркестрації контейнерів для production-середовищ

Вступ Kubernetes став де-факто стандартом для запуску контейнеризованих застосунків у production-середовищах. Якщо Docker вирішив проблему пакування застосунку разом із залежностями, то Kubernetes вирішує значно складніше завдання - як масштабувати,...

category DevOps person iron_will event 19/04/2026

Файлові системи ext4, XFS, Btrfs - що обрати для production

Вступ Вибір файлової системи в Linux-середовищі - це не просто технічна деталь, а стратегічне рішення, яке безпосередньо впливає на продуктивність, надійність і масштабованість інфраструктури. У production-системах, де критичними є стабільність і пе...

category DevOps person iron_will event 14/04/2026

Nmap: що це таке та як з ним працювати

Вступ У сучасному світі інформаційної безпеки та адміністрування мереж важливо мати інструменти, які дозволяють швидко отримувати інформацію про інфраструктуру, виявляти відкриті порти, служби та потенційні вразливості. Одним із найпотужніших і найп...

category Security person iron_will event 19/03/2026

Корисні команди Linux (Ubuntu): практичний довідник для системних адміністраторів та DevOps

Вступ Linux є основою більшості сучасної серверної інфраструктури. Веб-сервери, системи контейнеризації, хмарні платформи, CI/CD-пайплайни та мережеві сервіси у переважній більшості випадків працюють саме на Linux. Серед різних дистрибутивів особлив...

category CheatSheets person iron_will event 13/03/2026

Systemd: розширені сценарії керування сервісами

Systemd давно перестав бути просто менеджером ініціалізації. Сьогодні це повноцінна екосистема для оркестрації процесів, управління ресурсами, налагодження залежностей і моніторингу сервісів у реальному часі. Незважаючи на це, більшість адміністратор...

category DevOps person iron_will event 03/03/2026

Глибока оптимізація Linux-серверів під production-навантаження

Запустити сервер в Linux - справа нескладна. Але налаштувати його так, щоб він витримував тисячі одночасних з'єднань, мінімізував латентність і не «падав» під піковим навантаженням - це вже інженерна задача, яка потребує системного підходу. Дистрибут...

category DevOps person iron_will event 03/03/2026
cookie
This website uses cookies to improve your experience. Learn more