*КУБ– полный комплекс облачных услуг!

PowerShell для автоматизации: универсальный инструмент IT‑специалиста

PowerShell for automation: a universal tool for IT professionals

PowerShell — это мощный инструмент автоматизации и управления для системных администраторов. Он позволяет запускать сценарии (скрипты), контролировать службы, пользователей, события, а также взаимодействовать с внешними системами и API. Это руководство покажет, как шаг за шагом использовать PowerShell для реальных задач.

Установка и подготовка

  1. Загрузите PowerShell 7+ с официального сайта: https://github.com/PowerShell/PowerShell
  2. Откройте PowerShell или PowerShell ISE (встроенный редактор скриптов).

Разрешите выполнение скриптов, выполнив:

				
					Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

				
			
PowerShell для автоматизації універсальний інструмент IT-фахівця

Первый скрипт Hello.ps1

Создайте файл Hello.ps1 и вставьте:

				
					Write-Host "Hello, PowerShell automation!"
Get-Date
$env:USERNAME
				
			

Запустите скрипт командой:

				
					.\Hello.ps1
				
			
PowerShell для автоматизації універсальний інструмент IT-фахівця

Основы синтаксиса

PowerShell основан на понятной и лаконичной структуре:

  • Команды: Get-Process, Start-Service, Stop-Computer
  • Переменные: $user = «Admin»
  • Условия: if ($x -gt 10) { … }
  • Циклы: foreach ($item in $list) { … }

Используйте редактор PowerShell ISE или Visual Studio Code с расширением PowerShell для подсветки и автодополнения.

PowerShell для автоматизації універсальний інструмент IT-фахівця

Стиль и структура скриптов

Рекомендуется придерживаться следующих принципов:

  • Называйте функции в стиле Глагол-Сущность: Get-Report, Start-Backup
  • Используйте Try-Catch для обработки ошибок
  • Добавляйте комментарии и описания параметров (докблоки)
  • Разделяйте логику по функциям и модулям

Пример: мониторинг памяти

				
					param([int]$Threshold = 80)

$mem = Get-CimInstance Win32_OperatingSystem |
    Select @{Name='FreeGB'; Expression={[math]::Round($_.FreePhysicalMemory/1MB,2)}}

if ($mem.FreeGB -lt $Threshold) {
    Write-Warning "Memory low: $($mem.FreeGB) GB"
} else {
    Write-Host "Memory OK: $($mem.FreeGB) GB"
}

				
			

Сценарий проверяет, достаточно ли свободной памяти, и выводит предупреждение при ее недостатке.

Планировщик задач (Task Scheduler)

Вы можете запускать скрипты PowerShell по расписанию:

  • Откройте Планировщик задач
  • Создайте новую задачу → Вкладка Действие

Укажите:

				
					powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\Hello.ps1"
				
			
  • Настройте триггер по времени или событию

Управление пользователями

Локальные пользователи:

				
					$pass = Read-Host -AsSecureString "Введите пароль"
New-LocalUser -Name "TestUser" -Password $pass -FullName "Тестовый пользователь"
Disable-LocalUser -Name "TestUser"
Remove-LocalUser -Name "TestUser"
				
			

Active Directory (з CSV-файлом):

				
					Import-Csv users.csv | ForEach-Object {
    New-ADUser -Name $_.Name -SamAccountName $_.Login `
    -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) -Enabled $true
}
				
			

Мониторинг событий Windows

				
					Get-WinEvent -LogName System -MaxEvents 10 |
Format-Table TimeCreated, Id, Message
				
			

Фильтрация:

				
					Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000; StartTime=(Get-Date).AddDays(-1)}
				
			

Экспорт в CSV:

				
					... | Export-Csv "C:\Logs\app.csv" -NoTypeInformation
				
			

Резервное копирование и архивирование

				
					$src = "C:\Important"
$dst = "D:\Backup\Backup_$(Get-Date -Format 'yyyyMMdd').zip"
Compress-Archive -Path "$src\*" -DestinationPath $dst

Add-Content "D:\Backup\backup_log.txt" "Backup: $(Get-Date) → $dst"
				
			

Этот скрипт создает архив из папки и регистрирует факт резервного копирования.

Электронные сообщения

				
					Send-MailMessage -From "admin@domain.com" -To "team@company.com" `
 -Subject "Backup report" -Body "Backup completed successfully." `
 -SmtpServer "smtp.domain.com" -Attachments "D:\Backup\*.zip"
				
			

Интеграция с CI/CD и облаком

  • Вы можете использовать PowerShell в GitHub Actions, Azure Automation Runbooks или на VPS SSD

Пример для GitHub Actions:

				
					- name: Run PowerShell script
  run: pwsh ./monitor.ps1
				
			
  • В Azure вы можете запустить скрипт по расписанию с RBAC и логами выполнения.

PowerShell — это не просто оболочка, а универсальный инструмент автоматизации. Реальные примеры резервного копирования, удаления старых файлов и запуска программ помогают быстро понять основы. Важно: всегда тестируйте скрипты с параметром -WhatIf или в тестовой среде, чтобы избежать нежелательных изменений.