Содержание курса
PowerShell 7 как платформа — движок, окружение, первый скрипт
8 уроков
1.
PowerShell 7 против Windows PowerShell 5.1 — что вы получаете
↗
2.
Рабочее окружение — pwsh, профили, PSReadLine, VS Code
↗
3.
Объекты вместо текста — главное отличие от Bash и cmd
↗
4.
Единицы кода — командлеты, функции, скрипты, модули
↗
5.
Исследование системы — Get-Help, Get-Command, Get-Member, about_
↗
6.
Сквозной проект Vigil — задача и план роста модуля
↗
7.
Первый серьёзный скрипт — #Requires, StrictMode, кодировка
↗
8.
Практика — каркас репозитория Vigil
↗
Язык — система типов, строки, коллекции, управление потоком
9 уроков
1.
Типы .NET в PowerShell — литералы, приведение, типизация
↗
2.
Строки — интерполяция, here-strings, -f, культура, кодировки
↗
3.
Числа, даты, интервалы и единицы измерения
↗
4.
Операторы сравнения и логики — регистр, шаблоны, коллекции
↗
5.
Массивы и списки — неизменяемость, List[T], += как антипаттерн
↗
6.
Хеш-таблицы, упорядоченные словари и PSCustomObject
↗
7.
$null, пустые коллекции и авто-развёртывание
↗
8.
Управление потоком — if, switch с -regex и -wildcard, циклы
↗
9.
Практика — модель данных Vigil на PSCustomObject
↗
Конвейер и потоки вывода
8 уроков
1.
Как работает конвейер — begin, process, end и потоки
↗
2.
Where-Object, ForEach-Object, Select-Object — фильтр и проекция
↗
3.
Sort-Object, Group-Object, Measure-Object, Compare-Object
↗
4.
Форматирование вывода — Format-Table, Format-List, Out-
↗
5.
Шесть потоков — Output, Error, Warning, Verbose, Debug, Info
↗
6.
Вывод функций — Write-Output, return, Write-Host
↗
7.
Операторы PowerShell 7 — тернарный, null-операторы, цепочки
↗
8.
Практика — конвейер обработки результатов Vigil
↗
Функции и параметры — advanced functions
9 уроков
1.
Простые и advanced functions — что даёт CmdletBinding
↗
2.
Параметры — Parameter, Mandatory, Position, конвейер
↗
3.
Валидация параметров — атрибуты Validate и ArgumentCompleter
↗
4.
Наборы параметров и динамические параметры
↗
5.
Splatting, $PSBoundParameters и $PSDefaultParameterValues
↗
6.
SupportsShouldProcess — -WhatIf и -Confirm для опасных операций
↗
7.
Возврат значений — OutputType, разворачивание, NoEnumerate
↗
8.
Comment-based help — документируем функции как командлеты
↗
9.
Практика — Test-VigilHttp и Test-VigilTcp как advanced functions
↗
Ошибки и надёжность
8 уроков
1.
Два вида ошибок — terminating и non-terminating
↗
2.
try, catch, finally, throw, типизированные catch
↗
3.
ErrorRecord под лупой — $_, $Error, InvocationInfo, Get-Error
↗
4.
Ошибки нативных команд — $LASTEXITCODE, stderr, коды возврата
↗
5.
Write-Error правильно — ErrorId, WriteError, ThrowTerminating
↗
6.
Повторы, таймауты и защитные обёртки — Invoke-VigilRetry
↗
7.
Собственные исключения и коды ошибок
↗
8.
Практика — устойчивое выполнение проверок Vigil
↗
Модули — структура, манифест, области видимости, публикация
9 уроков
1.
Script module и манифест — psm1, psd1, Test-ModuleManifest
↗
2.
Структура модуля — Public, Private, Export-ModuleMember
↗
3.
Области видимости — scope, script, global, модуль как замыкание
↗
4.
Версии и зависимости — RequiredModules, PSEdition, Prerelease
↗
5.
Загрузка модулей — PSModulePath, автозагрузка, Import-Module
↗
6.
Форматы и типы модуля — ps1xml, FormatData, TypeData
↗
7.
PSResourceGet — установка, репозитории, публикация
↗
8.
Сборка модуля — build.ps1, один файл, версия из CI
↗
9.
Практика — модуль Vigil с манифестом
↗
Классы, enum и объектная модель
8 уроков
1.
class в PowerShell — свойства, конструкторы, методы, статика
↗
2.
enum и Flags — перечисления для severity и видов проверок
↗
3.
Наследование, интерфейсы, переопределение методов
↗
4.
Классы против PSCustomObject — критерии выбора и ограничения
↗
5.
Валидация и скрытые члены — hidden, Validate, только для чтения
↗
6.
Generic-коллекции .NET — List, Dictionary, HashSet, Concurrent
↗
7.
Приёмы объектной модели — ScriptMethod, PSTypeName, TypeData
↗
8.
Практика — доменные классы Vigil
↗
Данные — JSON, CSV, XML, файлы, REST, конфигурация, секреты
8 уроков
1.
JSON в PowerShell 7 — ConvertTo-Json, ConvertFrom-Json, Depth
↗
2.
CSV — Import-Csv, Export-Csv, кодировки, разделители, типы
↗
3.
XML — [xml], Select-Xml, XPath, System.Xml.Linq
↗
4.
Invoke-RestMethod и Invoke-WebRequest — заголовки, auth, ошибки
↗
5.
Файлы и пути — Join-Path, LiteralPath, кодировки, потоки
↗
6.
Конфигурация — psd1, Import-PowerShellDataFile, слои окружения
↗
7.
Секреты — SecretManagement, SecureString, PSCredential, CI
↗
8.
Практика — конфигурация, история и уведомления Vigil
↗
Параллелизм — runspaces, jobs, -Parallel, .NET Task
8 уроков
1.
Модель исполнения PowerShell — runspace, поток, сессия
↗
2.
ForEach-Object -Parallel — ThrottleLimit, using, AsJob, Timeout
↗
3.
Jobs — Start-Job, Start-ThreadJob, Receive-Job, Wait-Job
↗
4.
Runspace pool своими руками — RunspacePool, BeginInvoke
↗
5.
.NET Task и асинхронные API — ожидание, HttpClient, GetAwaiter
↗
6.
Общие данные и синхронизация — ConcurrentDictionary, ref, локи
↗
7.
Диагностика параллельного кода — тайминги, Verbose, прерывание
↗
8.
Практика — параллельный запуск проверок Vigil
↗
Тестирование и качество кода
8 уроков
1.
Pester 5 — Describe, It, Should, запуск и конфигурация
↗
2.
Mock и изоляция — ParameterFilter, Should -Invoke, InModuleScope
↗
3.
Тесты параметров, ошибок и конвейера — ForEach, Should -Throw
↗
4.
Интеграционные тесты — TestDrive, локальная HTTP-заглушка
↗
5.
PSScriptAnalyzer — правила, подавление, кастомные правила
↗
6.
Форматирование кода — Invoke-Formatter, editorconfig, VS Code
↗
7.
Покрытие и отчёты — CodeCoverage, JaCoCo, NUnit XML для CI
↗
8.
Практика — тестовое покрытие Vigil
↗
Взаимодействие с ОС, процессами, .NET и расписанием
8 уроков
1.
Нативные команды — аргументы, кавычки, stderr, LASTEXITCODE
↗
2.
Start-Process, stdin и stdout, коды возврата, Process API
↗
3.
Кроссплатформенный код — пути, регистр, переносы, IsWindows
↗
4.
Прямой вызов .NET — статика, конструкторы, Add-Type, inline C#
↗
5.
Платформенные API — службы, CIM, реестр; systemd, proc
↗
6.
Логирование — Start-Transcript, JSON-логи, потоки и уровни
↗
7.
Запуск по расписанию — Task Scheduler, cron, systemd, NoProfile
↗
8.
Практика — Vigil как задача по расписанию
↗
Производительность, remoting, безопасность, CI и релиз
8 уроков
1.
Производительность — измерение и типичные узкие места
↗
2.
Remoting в PowerShell 7 — SSH, New-PSSession, Invoke-Command
↗
3.
Безопасность — ExecutionPolicy, подпись, ConstrainedLanguage
↗
4.
GitHub Actions для модуля — матрица ОС, Pester, артефакты
↗
5.
Публикация — версия, CHANGELOG, Publish-PSResource, пререлизы
↗
6.
Документация модуля — PlatyPS, about_Vigil, README, примеры
↗
7.
Расширяемость — новая проверка в Vigil по контракту
↗
8.
Практика — релиз Vigil 1.0
↗