Простые приложения на PowerShell
Простые приложения на PowerShell
PowerShell — оболочка и язык с объектным конвейером (не только текст). Удобен для администрирования Windows, Azure, Active Directory, а также кроссплатформенных задач в pwsh 7+.
Как запускать примеры из главы
- Сохраните код в
имя.ps1. - Windows:
powershell -File имя.ps1или.\имя.ps1(при разрешённом ExecutionPolicy). - Кроссплатформенно:
pwsh имя.ps1(PowerShell 7+).
Проверка: pwsh -Version или $PSVersionTable.
Резервное копирование
Как запустить
- Файл:
backup.ps1 - Команда:
pwsh -File backup.ps1 -Source .\notes.txt - Результат:
OK: backups\...
param(
[Parameter(Mandatory)][string]$Source,
[string]$BackupDir = 'backups'
)
New-Item -ItemType Directory -Force -Path $BackupDir | Out-Null
$stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
$name = Join-Path $BackupDir "$stamp\_$(Split-Path $Source -Leaf)"
Copy-Item -Path $Source -Destination $name
Write-Host "OK: $name"
Сортировка строк файла
Как запустить
- Файл:
sort.ps1 - Подготовка:
input.txt - Команда:
pwsh -File sort.ps1 - Результат:
sorted.txt
$lines = Get-Content -Path 'input.txt' -Encoding UTF8 |
ForEach-Object { $_.Trim() } |
Where-Object { $_ }
$lines | Sort-Object | Set-Content -Path 'sorted.txt' -Encoding UTF8
Проверка URL (Invoke-WebRequest)
Как запустить
- Файл:
check_url.ps1 - Команда:
pwsh -File check_url.ps1 - Результат: объект с полями
Url,Status,Ok
function Test-Endpoint {
param([string]$Url)
try {
$r = Invoke-WebRequest -Uri $Url -Method Head -TimeoutSec 5
[pscustomobject]@{ Url = $Url; Status = $r.StatusCode; Ok = $true }
} catch {
[pscustomobject]@{ Url = $Url; Status = $null; Ok = $false; Error = $_.Exception.Message }
}
}
Test-Endpoint 'https://example.com'
JSON-трекер
Как запустить
- Файл:
tasks.ps1 - Команда:
pwsh -File tasks.ps1 - Результат:
tasks.jsonв текущем каталоге
$path = 'tasks.json'
$tasks = if (Test-Path $path) { Get-Content $path -Raw | ConvertFrom-Json } else { @() }
$tasks += [pscustomobject]@{ id = [guid]::NewGuid(); title = 'Изучить PowerShell'; done = $false }
$tasks | ConvertTo-Json -Depth 5 | Set-Content $path -Encoding UTF8
Список процессов
Как запустить
- Файл:
processes.ps1 - Команда:
pwsh -File processes.ps1 - Результат: таблица процессов
pwshв консоли
Get-Process | Where-Object { $_.ProcessName -like 'pwsh*' } |
Select-Object ProcessName, Id, CPU |
Format-Table -AutoSize
Характерный пример — объектный конвейер
Как запустить
- Файл:
extensions.ps1 - Команда:
pwsh -File extensions.ps1из каталога с файлами - Результат: топ-10 расширений по количеству файлов
Get-ChildItem -Recurse -File |
Group-Object Extension |
Sort-Object Count -Descending |
Select-Object -First 10 Name, Count
Каждый этап передаёт объекты, а не строки — отличие от классического bash-пайпа.
См. также: Bash · раздел автоматизации Windows
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). История PowerShell - эволюция платформы от Windows-оболочки до кроссплатформенного языка автоматизации. Экосистема автоматизации на PowerShell - установка, окружение и типовые инструменты для системных задач. Набор советов, правил, принципов и обычаев в разработке на этом языке. Основы языка PowerShell - синтаксис, объектный пайплайн и базовые подходы к автоматизации администрирования. PowerShell представляет собой среду командной строки и скриптовый язык, построенный на базе платформы .NET. $this — переменная, указывающая на текущий объект в методах классов. В PowerShell переменная $this используется внутри методов для обращения к свойствам и методам текущего экземпляра класса. Командлеты и встроенные функции PowerShell - устройство, принципы использования и расширение возможностей оболочки. Типизация, набор правил определения типа данных значений языка. Условные выражения и циклы в PowerShell - ветвление сценариев и управление повторяющимися операциями. Функции и продвинутые параметры в PowerShell - переиспользование кода, валидация аргументов и удобство CLI. Для динамического добавления свойств используется cmdlet Add-Member. Это позволяет расширять функциональность объектов без изменения их исходного кода. Обработка ошибок и отладка в PowerShell - исключения, диагностика сбоев и практики повышения надежности скриптов.История PowerShell
Экосистема автоматизации на PowerShell
Рекомендации по написанию PowerShell-скриптов
Основы языка PowerShell
Синтаксис и операторы PowerShell
Ключевые слова и управляющие конструкции
Командлеты и встроенные функции PowerShell
Типы данных и работа с переменными
Условные выражения и циклы
Функции и продвинутые параметры
Объектная модель и конвейерная обработка
Обработка ошибок и стратегии отладки