8.1 Пакетные файлы (.bat)
Пакетные файлы (.bat) — это простой способ автоматизации задач в Windows через командную строку.
Создание пакетного файла
Пример простого .bat файла
@echo off
echo Привет, мир!
pause
Основные команды
# Комментарии
REM Это комментарий
# Вывод текста
echo Текст для вывода
# Пауза
pause
# Переход в папку
cd C:\Users
# Запуск программы
start notepad.exe
Переменные и параметры
Использование переменных
@echo off
set MY_VAR=Привет
echo %MY_VAR%
REM Параметры командной строки
echo Первый параметр: %1
echo Второй параметр: %2
pause
8.2 PowerShell скрипты
PowerShell скрипты (.ps1) предоставляют мощные возможности для автоматизации задач в Windows.
Создание скрипта
Пример PowerShell скрипта
# Скрипт для создания резервной копии
param(
[string]$SourcePath = "C:\Users\Иван\Documents",
[string]$BackupPath = "C:\Backup"
)
# Создание папки для бэкапа
if (!(Test-Path $BackupPath)) {
New-Item -ItemType Directory -Path $BackupPath -Force
}
# Копирование файлов
Copy-Item -Path $SourcePath -Destination $BackupPath -Recurse -Force
Write-Host "Резервная копия создана в: $BackupPath"
Выполнение скриптов
# Выполнение скрипта
.\MyScript.ps1
# Выполнение с параметрами
.\MyScript.ps1 -SourcePath "C:\Data" -BackupPath "D:\Backup"
# Выполнение с обходом политики выполнения
PowerShell -ExecutionPolicy Bypass -File ".\MyScript.ps1"
Функции и модули
Создание функции
function Get-SystemInfo {
param([string]$ComputerName = "localhost")
$info = Get-ComputerInfo -Property TotalPhysicalMemory, WindowsProductName, WindowsVersion
return $info
}
# Использование функции
$systemInfo = Get-SystemInfo
Write-Host "Память: $($systemInfo.TotalPhysicalMemory / 1GB) GB"
8.3 Планировщик задач
Планировщик задач Windows позволяет автоматически запускать программы и скрипты по расписанию.
Создание задачи через PowerShell
# Создание простой задачи
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\MyScript.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At "09:00"
$settings = New-ScheduledTaskSettingsSet
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "МояЗадача" -Settings $settings
Управление задачами
# Просмотр всех задач
Get-ScheduledTask
# Запуск задачи
Start-ScheduledTask -TaskName "МояЗадача"
# Остановка задачи
Stop-ScheduledTask -TaskName "МояЗадача"
# Удаление задачи
Unregister-ScheduledTask -TaskName "МояЗадача" -Confirm:$false
Создание задачи через GUI
Планировщик задач: Откройте "Планировщик задач" через меню "Пуск" или выполните команду taskschd.msc для графического интерфейса.
8.4 Продвинутая автоматизация
Продвинутые техники автоматизации включают работу с WMI, COM-объектами и удаленным выполнением.
Работа с WMI
# Получение информации о системе
Get-WmiObject -Class Win32_ComputerSystem
# Мониторинг процессов
Get-WmiObject -Class Win32_Process | Where-Object {$_.Name -like "*notepad*"}
# Управление службами через WMI
$service = Get-WmiObject -Class Win32_Service -Filter "Name='Spooler'"
$service.StartService()
COM-объекты
# Работа с Excel через COM
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true
$workbook = $excel.Workbooks.Add()
$worksheet = $workbook.Worksheets.Item(1)
$worksheet.Cells.Item(1,1) = "Привет, Excel!"
$excel.Quit()
Удаленное выполнение
# Выполнение команды на удаленном компьютере
Invoke-Command -ComputerName "RemotePC" -ScriptBlock {Get-Process}
# Создание постоянного сеанса
$session = New-PSSession -ComputerName "RemotePC"
Invoke-Command -Session $session -ScriptBlock {Get-Service}
Remove-PSSession $session