Windows: Хватит кликать! Управляем состоянием сервера с PowerShell DSC
Классический подход к настройке Windows Server — это чек-лист на 20 страниц и часы ручной работы в GUI. Архитектор так не делает. Он описывает желаемое состояние системы в коде.
PowerShell Desired State Configuration (DSC) — это фреймворк Infrastructure as Code (IaC) от Microsoft. Вы не пишете скрипт "как сделать", вы пишете декларативный конфиг "каким должен быть сервер".
Задача: Убедиться, что на всех веб-серверах установлена роль IIS и отключен Telnet-клиент.
1. Создаём конфигурацию (файл IIS_Config.ps1):
PowerShell
2. Применяем конфигурацию:
Сначала запускаем скрипт выше, он создаст .mof файл в новой папке. Затем выполняем команду:
PowerShell
Что произойдёт?
DSC проверит состояние IIS и Telnet.
Если IIS не установлен — он его установит.
Если Telnet-клиент установлен — он его удалит.
Если всё уже в порядке — ничего не произойдёт.
Почему это взгляд архитектора?
✅ Декларативность: Вы описываете ЧТО, а не КАК. Система сама приходит в нужное состояние.
✅ Идемпотентность: Конфигурацию можно применять сотни раз, результат всегда будет одинаков и предсказуем.
✅ Масштабирование и аудит: Один и тот же MOF-файл можно применить к тысяче машин. А команда Test-DscConfiguration мгновенно покажет, соответствует ли сервер заданной конфигурации (drift detection).
Это первый шаг к таким инструментам, как Ansible и Puppet, но прямо в вашей Windows-среде.
#windows #powershell #dsc #iac #automation #architect
Классический подход к настройке Windows Server — это чек-лист на 20 страниц и часы ручной работы в GUI. Архитектор так не делает. Он описывает желаемое состояние системы в коде.
PowerShell Desired State Configuration (DSC) — это фреймворк Infrastructure as Code (IaC) от Microsoft. Вы не пишете скрипт "как сделать", вы пишете декларативный конфиг "каким должен быть сервер".
Задача: Убедиться, что на всех веб-серверах установлена роль IIS и отключен Telnet-клиент.
1. Создаём конфигурацию (файл IIS_Config.ps1):
PowerShell
# Конфигурация описывает желаемое состояние узла (сервера)
Configuration WebServerState {
# Импортируем необходимые ресурсы DSC
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'
# Применяем конфигурацию к любому узлу с именем 'localhost'
# (в реальной среде здесь будут имена серверов)
Node "localhost" {
# Ресурс WindowsFeature обеспечивает наличие роли или компонента
WindowsFeature "IIS" {
Ensure = "Present" # Убедиться, что он УСТАНОВЛЕН
Name = "Web-Server" # Техническое имя роли IIS
}
WindowsFeature "TelnetClient" {
Ensure = "Absent" # Убедиться, что он ОТСУТСТВУЕТ
Name = "Telnet-Client"
}
}
}
# Вызываем конфигурацию, чтобы сгенерировать MOF-файл
WebServerState
2. Применяем конфигурацию:
Сначала запускаем скрипт выше, он создаст .mof файл в новой папке. Затем выполняем команду:
PowerShell
Start-DscConfiguration -Path ./WebServerState -Wait -Verbose
Что произойдёт?
DSC проверит состояние IIS и Telnet.
Если IIS не установлен — он его установит.
Если Telnet-клиент установлен — он его удалит.
Если всё уже в порядке — ничего не произойдёт.
Почему это взгляд архитектора?
✅ Декларативность: Вы описываете ЧТО, а не КАК. Система сама приходит в нужное состояние.
✅ Идемпотентность: Конфигурацию можно применять сотни раз, результат всегда будет одинаков и предсказуем.
✅ Масштабирование и аудит: Один и тот же MOF-файл можно применить к тысяче машин. А команда Test-DscConfiguration мгновенно покажет, соответствует ли сервер заданной конфигурации (drift detection).
Это первый шаг к таким инструментам, как Ansible и Puppet, но прямо в вашей Windows-среде.
#windows #powershell #dsc #iac #automation #architect
Windows: winget configure. Настройка рабочего места одной командой
Мы уже говорили про winget install. Но Microsoft пошли дальше и представили winget configure — декларативный способ настройки окружения. Это ваш личный ansible-playbook для Windows-машины.
Вы больше не пишете скрипт "как установить". Вы создаете YAML-файл, описывающий, каким должно быть ваше окружение.
Как это работает:
Создаём конфигурационный файл workstation.dsc.yaml:
В нём мы описываем нужные приложения из winget и желаемые настройки PowerShell-модулей DSC.
YAML
Применяем конфигурацию:
Одна команда, которая проверит систему и приведёт её в соответствие с файлом.
PowerShell
Взгляд архитектора:
winget configure — это огромный шаг к Infrastructure as Code (IaC) на рабочих станциях. Конфигурационные YAML-файлы можно хранить в Git, версионировать и шарить внутри команды. Это обеспечивает идемпотентность и воспроизводимость окружения, гарантируя, что у каждого разработчика и админа будет одинаковый и предсказуемый набор инструментов.
#windows #winget #powershell #dsc #iac #automation #гайд
Мы уже говорили про winget install. Но Microsoft пошли дальше и представили winget configure — декларативный способ настройки окружения. Это ваш личный ansible-playbook для Windows-машины.
Вы больше не пишете скрипт "как установить". Вы создаете YAML-файл, описывающий, каким должно быть ваше окружение.
Как это работает:
Создаём конфигурационный файл workstation.dsc.yaml:
В нём мы описываем нужные приложения из winget и желаемые настройки PowerShell-модулей DSC.
YAML
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
properties:
resources:
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: install-powertoys
directives:
description: Install Microsoft PowerToys
settings:
id: Microsoft.PowerToys
source: winget
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: install-vscode
directives:
description: Install Visual Studio Code
settings:
id: Microsoft.VisualStudioCode
source: winget
- resource: Microsoft.Windows.Developer/DeveloperMode
id: enable-devmode
directives:
description: Enable Developer Mode
settings:
Ensure: Present
configurationVersion: 0.2.0
Применяем конфигурацию:
Одна команда, которая проверит систему и приведёт её в соответствие с файлом.
PowerShell
# Сначала проверяем, что изменится (dry-run)
winget configure --file workstation.dsc.yaml
# Применяем конфигурацию
winget configure --file workstation.dsc.yaml --accept-configuration-agreements
Взгляд архитектора:
winget configure — это огромный шаг к Infrastructure as Code (IaC) на рабочих станциях. Конфигурационные YAML-файлы можно хранить в Git, версионировать и шарить внутри команды. Это обеспечивает идемпотентность и воспроизводимость окружения, гарантируя, что у каждого разработчика и админа будет одинаковый и предсказуемый набор инструментов.
#windows #winget #powershell #dsc #iac #automation #гайд
Windows & DSC: Аудит и принудительная настройка безопасности
Один из принципов архитектора — не просто настраивать систему, а гарантировать её состояние. PowerShell Desired State Configuration (DSC) позволяет описать, каким должен быть ваш сервер, и автоматически исправлять любые отклонения.
Давайте создадим простую, но мощную DSC-конфигурацию, которая следит за критически важными параметрами безопасности.
Что делает конфигурация:
Убеждается, что служба удаленного реестра (Remote Registry) отключена.
Гарантирует, что PowerShell v2 (старая и небезопасная версия) удален.
Включает WinRM (Windows Remote Management) для централизованного управления.
Код конфигурации (SecurityBaseline.ps1):
PowerShell
Взгляд архитектора: DSC — это не просто скрипт. Это реализация Infrastructure as Code (IaC) для Windows. Храните такие конфигурации в Git. Запускайте Test-DscConfiguration по расписанию, чтобы обнаруживать дрейф конфигурации (configuration drift) и получать алерты, когда состояние сервера отклоняется от эталона.
#windows #powershell #dsc #iac #security #гайд
Один из принципов архитектора — не просто настраивать систему, а гарантировать её состояние. PowerShell Desired State Configuration (DSC) позволяет описать, каким должен быть ваш сервер, и автоматически исправлять любые отклонения.
Давайте создадим простую, но мощную DSC-конфигурацию, которая следит за критически важными параметрами безопасности.
Что делает конфигурация:
Убеждается, что служба удаленного реестра (Remote Registry) отключена.
Гарантирует, что PowerShell v2 (старая и небезопасная версия) удален.
Включает WinRM (Windows Remote Management) для централизованного управления.
Код конфигурации (SecurityBaseline.ps1):
PowerShell
Configuration SecurityBaseline
{
Node "localhost"
{
Service "RemoteRegistry"
{
Name = "RemoteRegistry"
StartupType = "Disabled"
State = "Stopped"
Ensure = "Present"
}
WindowsFeature "PowerShell-V2"
{
Name = "PowerShell-V2"
Ensure = "Absent"
}
WindowsFeature "WinRM"
{
Name = "WinRM"
Ensure = "Present"
}
}
}
# Компилируем конфигурацию в MOF-файл
SecurityBaseline
# Применяем конфигурацию
Start-DscConfiguration -Path ./SecurityBaseline -Wait -Verbose -Force
Взгляд архитектора: DSC — это не просто скрипт. Это реализация Infrastructure as Code (IaC) для Windows. Храните такие конфигурации в Git. Запускайте Test-DscConfiguration по расписанию, чтобы обнаруживать дрейф конфигурации (configuration drift) и получать алерты, когда состояние сервера отклоняется от эталона.
#windows #powershell #dsc #iac #security #гайд
🪟 Windows: WinGet Configuration — настраиваем рабочее место через YAML 📝
В 2026 году ручная установка софта в Windows — это моветон. Microsoft активно развивает WinGet Configuration (на базе Desired State Configuration — DSC). Теперь ты можешь описать всё состояние системы в одном YAML-файле и применить его на новом сервере или ноутбуке сотрудника.
Пример конфигурационного файла (config.yaml):
Команда для применения:
Зачем это нужно: Это «Terraform для локальной Windows».
Один файл — и через 5 минут у тебя настроенная машина со всеми админскими утилитами.
#windows #automation #winget #dsc #devops #sysadmin #admin_future
В 2026 году ручная установка софта в Windows — это моветон. Microsoft активно развивает WinGet Configuration (на базе Desired State Configuration — DSC). Теперь ты можешь описать всё состояние системы в одном YAML-файле и применить его на новом сервере или ноутбуке сотрудника.
Техническая суть:
Ты описываешь не только список программ, но и настройки системы, реестра и функций Windows.
Пример конфигурационного файла (config.yaml):
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
properties:
resources:
- resource: Microsoft.WinGet.DSC/WinGetPackage
directives:
description: Install VS Code
settings:
id: Microsoft.VisualStudioCode
source: winget
- resource: Microsoft.Windows.Developer/DeveloperMode
settings:
Enabled: true
configurationVersion: 0.2
Команда для применения:
# Проверить файл и применить настройки
winget configure config.yaml
Зачем это нужно: Это «Terraform для локальной Windows».
Один файл — и через 5 минут у тебя настроенная машина со всеми админскими утилитами.
#windows #automation #winget #dsc #devops #sysadmin #admin_future
🔥3