На этом курсе будут рассматриваться технологии, инструменты, использующиеся в Windows Server, а также архитектура системы
Сейчас лидирующее положение среди операционных систем на персональных компьютерах занимает Microsoft Windows
В серверах же преобладает ОС Linux, доля Windows составляет около 20%. При этом ОС Windows не популярна как платформа для веб-серверов (примерно 8% сайтов используют Windows) и суперкомпьютеров
Несмотря на это, около половину заработка компании Microsoft составляет облачные услуги и офисные продукты. Облачная платформа Microsoft Azure принесла более 100 млрд долларов за 2026 финансовый год, что составляет около 30% от прибыли компании. Сейчас Microsoft Azure на рынке облачных услуг уступает только Amazon Web Services
Ключевой технологией является Windows Server, которая используется:
Помимо Azure и Windows Server экосистема Microsoft включает:
Историю Microsoft можно разделить на 3 эпохи:
Предпосылками создания компании были желанием IBM выйти на рынок персональных компьютеров и Билла Гейтса заработать на ПО. IBM нуждалась в простенькой операционной системе, которая использовалась бы на аппаратном обеспечении IBM. До этого Microsoft разработали интерпретаторы языков BASIC, FORTRAN, COBOL и форк ОС Unix - Xenix
Первой версией стала MS-DOS (от MicroSoft Disk Operating System), выпущенная в 1981 году и основанная на выкупленной 86-DOS у Seattle Computer Products. MS-DOS имела только интерфейс консольной строки:

В 1985 году вышла Windows 1.0, которая представляла графическую оболочку и набор приложений для MS-DOS. В 1987 году Windows 2.0, а в 1993 году вышла Windows 3.11 for Workgroups, в которой появился интегрированный сетевой стек

Параллельно с развитием MS-DOS компании IBM и Microsoft совместно разрабатывали операционную систему OS/2. В 1991 году Microsoft прекращает участие, а наработки использует для создания ядра Windows NT (от New Technology). Новое ядро получило поддержку многопоточности, работы со множеством пользователей, 32-битной адресации, собственной файловой системы NTFS (New Technology File System) и стало архитектурнонезависимым
В 1993 году выходит Windows NT 3.1 для серверов и рабочих станций. В 1994 году появляется Windows NT 3.5, которая получила сертификат безопасности C2, определенный Критериями определения безопасности компьютерных систем (так называемая “Оранжевая книга”)
Параллельно с этим выходят Windows 95 и Windows 98, развивающую основную ветвь Windows. В Windows 95 графическая подсистема полностью встраивается в ядро ОС, а MS-DOS при этом продолжала использоваться для загрузки и обеспечения совместимости со старым ПО

Далее:

Сейчас операционные системы Windows для ПК и Windows Server используют одно ядро, однако серверные ОС отличаются набором компонентов. На 2026 году поддерживаются Windows Server 2016 (до января 2027), Windows Server 2019 (до января 2029), Windows Server 2022 (до октября 2031) и Windows Server 2025 (до ноября 2034)
Как и обычная версия Windows, которая издается в изданиях “Домашняя” (Home), “Профессиональная” (Pro) и “Корпоративная” (Enterprise), отличающиеся функционалом, Windows Server издается в нескольких редакциях:
Устаревшие редакции включают:
Отдельно существует сервис Windows 365 Cloud PC - облачная настольная среда в Azure, доступная по сети
Также Windows Server имеет несколько вариантов установки:
Отдельно существовал Minimal Server Interface в старых версиях Windows Server, начиная с Windows Server 2012, но в современных версиях отдельным вариантом установки не является
Операционная система - это слой абстракции между пользователем, программным обеспечением и аппаратным обеспечением
Операционная система решает такие задачи:
Windows является гибридной операционной системой нереального времени (которая делает приоритетом максимальную пропускную способность вместо гарантированного времени отклика) с вытесняющей многозадачностью
В отличии от Linux система Windows:
Windows, как и другие операционные системы, представляет собой слой абстракции между программным обеспечение и устройством, на котором обеспечение запускается
Изначально, проект Multics, прародитель Unix, ставил цель сделать ОС для многих пользователей, поэтому в Multics было 8 колец защиты (или привилегий). Кольцо 0 было наиболее привилегированным и использовалось для ядра или супервизора системы, а остальные 7 колец использовались для других подсистем, служб супервизора и пользовательских приложений. Чем больше номер кольца, тем менее возможностей взаимодействия с устройствами ПК имел процесс
Операционная система Windows же разрабатывалась для IBM-PC-совместимых компьютеров, то есть компьютеров с процессором архитектуры x86. Компания Intel, разработавшая архитектуру x86 и процессор Intel 80286, аппаратно реализовала 4 кольца привилегий в процессоре:
Процессор знает, в каком кольце исполняется текущий код благодаря машинному регистру, отвечающему за это, из-за чего понимал, что делать, если инструкция обращается к памяти чужого процесса или выполняемая инструкция неправильная
На практике ранние версии Windows (3.x, 95, 98 и Millennium Edition) использовали 2 кольца - 0 и 3. Затем при создании Windows NT учитывалось, что операционная система будет работать на процессорах не только архитектуры x86, но MIPS, Alpha и PowerPC, которые имеют только 2 кольца привилегий: привилегированный и пользовательский режимы. Поэтому кольца 1 и 2 в системе Windows (как и в других системах, таких как Linux и macOS) не используются
Современное ядро Windows NT имеет гибридную архитектуру, хотя изначально OS/2 планировалась как система с микроядерной архитектурой. Из-за этого некоторые существенные компоненты работают в пользовательском режиме

В пользовательском режиме работают:
smss.exe, от Session Manager Subsystem), программа входа в систему Windows (winlogon.exe) и согласованный пользовательский интерфейс для административных приложений (consent.exe)Отличия пользовательских приложений и процесс служб от системных процессов и подсистем окружения являются в использовании разных интерфейсов:
В режим ядра работают:
Исполнительная система - низкоуровневые функции операционной системы, такие как диспетчеризация потоков, диспетчеризация прерываний и исключений и мультипроцессорная синхронизация
Исполнительная система состоит из этих компонентов:
Графический пользовательский интерфейс (GUI) - реализация функция графического интерфейса, работа с окнами, элементы пользовательского интерфейса и графический вывод
Ядро Windows (ntoskrnl.exe) - низкоуровневые функции ОС: планирование потоков, диспетчеризация прерываний и исключений и многопроцессорная синхронизация. Оно
также предоставляет набор функций и базовых объектов, которые используются исполнительной системой для
реализации высокоуровневых конструкций
Драйверы устройств (*.sys в папке Windows\System32\Drivers) - драйверы физических устройств, преобразующие вызовы пользовательских функций ввода/вывода в конкретные запросы к устройству, и драйверы устройств, не относящихся к физическому оборудованию, например драйверы файловой системы, сети
Слой абстрагирования оборудования (он же HAL, Hardware Abstraction Layer или машинно-зависимые модули, hal.dll), который изолирует ядро, драйверы устройств и прочий исполняемый код от платформенно-зависимых различий в работе оборудования
Отдельно уровнем ниже существует гипервизор, который состоит из нескольких внутренних уровней и служб: собственный диспетчер памяти, планировщик виртуальных процессов, управление прерываниями и таймером, функции синхронизации, разделы (экземпляры виртуальных машин), внутрипроцессные коммуникации (IPC, Inter-Process Communication) и другое
Сейчас Windows 11 работает на процессорах с архитектурой x86-64 и ARM64. Версии с Windows 95 по Windows 10 поддерживают 32-битные процессоры архитектуры x86. Отдельная версия Windows RT (основанная на Windows 8 и 8.1) поддерживает процессоры архитектуры ARM32 (в том числе отдельные системы на чипе из семейства Nvidia Tegra). Ранние версии Windows работали на процессорах с архитектурой Itanium, DEC Alpha, PowerPC, MIPS
Сама система Windows написана на языках C, C++ и на языке ассемблера. Независимость от архитектуры в Windows обеспечивается изменение машинно-зависимых модулей и ядра
Ядро Windows поддерживает симметричную мультипроцессорность, то есть потоки процесса исполняются на любых ядрах с общей памятью, а также многоядерные, гиперпотоковые (Hyper-Threading) процессоры и технологию доступа к неоднородной памяти NUMA (Non-Uniform Memory Architecture) для систем с несколькими процессорами (память в NUMA разделяется NUMA-группы, которые распределяются отдельным процессорам)
Также Windows имеет ограничения до 64 физических процессоров (при этом неограниченное число логических ядер) и до 20 сокетов NUMA
Операционная система Windows Server может управляться с помощью таких инструментов:
mmc.exe) - консоль управления MicrosoftWindows имеет стандартную структуру каталогов:
Windows (в пользовательских компьютерах чаще всего C:\Windows, полный путь хранится в переменной окружения SystemRoot). В качестве ссылки на каталог Windows используются %SystemRoot% или %WinDir%
Windows\System32 - основные 64-битные системные файлы (динамические библиотеки .dll и исполняемые файлы .exe)Windows\SysWOW64 (от Windows on Windows 64-bit) - 32-битные версии файлов для запуска старых программWindows\WinSxS (от Side-by-Side) и Windows\Servicing\Packages - компоненты WindowsWindows\SoftwareDistribution и Windows\servicing\LCU (от Last Cumulative Update) - каталоги пакетов обновленийProgramData для хранения данных приложений и установочных файловProgram Files и Program Files (x86) для приложений (соответственно 64-битные и 32-битные)PerfLogs для хранения журналов производительностиRecovery для хранения образа среды восстановления$Recycle.Bin, который представляет “Корзину”System Volume Information, который хранит файлы, позволяющие восстановить состояние системы в случае серьезных сбоевUsers (в русской версии отображается как Пользователи) для хранения данных пользователей
Users/All Users и Users/Default для хранения специальных профилейUsers\%имя-пользователя%\Documents (Документы) - документыUsers\%имя-пользователя%\Desktop (Рабочий стол) - каталог файлов, иконки которых отображаются на рабочем столе системыUsers\%имя-пользователя%\AppData - данные приложений этого пользователя
Users\%имя-пользователя%\AppData\Local - локальные для этого компьютера данные приложений (например, кэш браузера)Users\%имя-пользователя%\AppData\LocalLow - данные приложений, работающих в изолированной средеUsers\%имя-пользователя%\AppData\Roaming - данные приложений, которые должны следовать за пользователем при входе в одну учетную запись на разных компьютерах (полезно для офисов)pagefile.sys - виртуальный файл подкачкиswapfile.sys - аналог pagefile.sys для приложений, созданных на UWP (Universal Windows Platform)hiberfil.sys - файл для работы гибернации. При входе в режим гибернации оперативная память копируется в этот файл, из-за чего экономится больше энергии, чем в спящем режимеКаталоги Windows, Recovery и файл Hiberfil.sys обязаны находится на системного разделе диска, а Program Files, ProgramData и Users могут находится вне, но через костыли
Конфигурация Windows хранится в конфигурационных файлах разных форматов (.ini, .xml, .json, .conf) и в реестре
Реестр Windows - это набор бинарных файлов для хранения конфигурации в виде дерева
Преимущества:
Недостатки:
Реестр хранит значения этих типов:
REG_SZ - обычная текстовая строка, используется для хранения путей, имен и других текстовых данных фиксированной длины.REG_DWORD - 32-разрядное число, применяется для хранения числовых параметров конфигурации, флагов и настроекREG_QWORD - 64-разрядное числоREG_BINARY- двоичные данные, информация отображается в шестнадцатеричном формате, чаще всего применяется для параметров оборудования и графических настроекREG_MULTI_SZ - множественная строковая последовательность (список строк, разделенных нулевым символом \0)REG_EXPAND_SZ - расширяемая строковая переменная. Текст, содержащий переменные окружения (например, %SystemRoot%), которые автоматически заменяются на реальные пути при чтенииREG_LINK - символическая Unicode-ссылка на другой раздел реестраРеестр также поддерживает ACL (Access Control List) - список управления доступом, который определяет, какие пользователи или группы имеют права на чтение, запись, изменение или удаление конкретных разделов и параметров в реестре
Значения в реестре разбиты на несколько основных веток:
HKEY_LOCAL_MACHINE (HKLM) - глобальные настройки компьютера, которые применяются ко всем пользователям и самой операционной системе
HKEY_LOCAL_MACHINE\HARDWARE - информация о текущем аппаратном обеспечении компьютера, создаваемая динамически (аналог /dev в Linux)HKEY_USERS (HKU) - профили всех пользователей, зарегистрированных в системеHKEY_CURRENT_USER (HKCU) - настройки текущего вошедшего пользователя (ссылка на подраздел внутри HKEY_USERS)HKEY_CLASSES_ROOT (HKCR) - сопоставления типов файлов и регистрация COM-компонентов. Эта ветка указывает системе, какое приложение должно открывать конкретный формат (например, .txt или .pdf), а также хранит настройки для контекстного меню проводника. Она является динамическим объединением данных из HKLM\Software\Classes (для всех пользователей) и HKCU\Software\Classes (личные ассоциации пользователя, которые имеют приоритет)HKEY_CURRENT_CONFIG (HKCC) - текущая конфигурация оборудования (ссылка на ветку HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current). Здесь хранятся временные параметры подключенных в данный момент устройств, профили мониторов, принтеров и других аппаратных средств, которые активны при текущем запуске системы.Сам реестр хранится во множестве файлов. Расположение основных веток:
HKEY_LOCAL_MACHINE\BCD00000000 хранится в %SystemRoot%\Boot\BCDHKEY_LOCAL_MACHINE\SYSTEM - хранится в %SystemRoot%\System32\config\SYSTEMHKEY_LOCAL_MACHINE\SOFTWARE - хранится в %SystemRoot%\System32\config\SOFTWAREHKEY_LOCAL_MACHINE\SECURITY - параметры безопасности, хранящиеся в %SystemRoot%\System32\config\SECURITYHKEY_LOCAL_MACHINE\SAM - формируется в %SystemRoot%\System32\config\SAMHKEY_USERS\DEFAULT - формируется из %SystemRoot%\System32\config\DEFAULTHKEY_USERS\S-1-5-18, HKEY_USERS\S-1-5-19 и HKEY_USERS\S-1-5-20 - формируются из документов NTUSER.DAT, которые лежат в директориях %SystemRoot%\System32\config\systemprofile\, %SystemRoot%\ServiceProfiles\LocalService\ и %SystemRoot%\ServiceProfiles\NetworkService\HKEY_USERS\%SID_пользователя% - формируется из %USERPROFILE%\NTUSER.DATHKEY_USERS\%SID_пользователя%_Classes - формируется из %USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.datТакже каталог %SystemRoot%\System32\config\RegBak применяется для бекапа реестра
Для изменения реестра существуют:
regedit.exe (или regedt32.exe - устаревший редактор для Windows NT/2000, сейчас является ссылкой на regedit.exe)reg.exeGet-ChildItem, Get-ItemProperty, Set-ItemProperty, New-Item, New-ItemProperty, Remove-ItemРаньше было обслуживание на основе файлов (File-Based Servicing, FBS): были .inf файлы с описанием изменений, а обновляемые системные файлы
перезаписывались новыми версиями непосредственно в %SystemRoot%\System32, а копия новой версии помещалась еще и в кэш защищенных системных файлов %SystemRoot%\System32\DLLcache
Сейчас используется обслуживание на основе компонентов (Component-Based
Servicing, CBS) с помощью TrustedInstaller.exe
Компонент представляет набор файлов, сгруппированных по назначению, функциональности и возможности многократного использования. В компонент входят библиотеки, исполняемые файлы, манифесты и так далее
Также появились статусы компонентов/обновлений (такие как установлен, активирован) и возможность ставить определенный функционал в операционной системе по мере необходимости
Благодаря этому обеспечиваются:
Управление компонентами осуществляется через:
OptionalFeatures.exe)Dism.exeGet-WindowsFeature и Enable-WindowsOptionalFeaturewinget для установки пакетов:
winget install <пакет> - установка пакетаwinget uninstall <пакет> - удаление пакетаwinget list - список установленных пакетовwinget show <пакет> - показать информацию о пакетеwinget source <опции> - управление репозиториями пакетовСлужбы могут быть:
.exe-файл, которые перечислены в реестре HKLM\SYSTEM\CurrentControlSet\Services.dll-библиотека, запускаемые через svchost.exe, например “Брандмауер Защитника Windows”Для служб в реестре есть поля:
Изначально Windows управлялась приложением командной строки cmd.exe, в которой были внутренние команды, а внешние в свою очередь были реализованы в отдельных исполняемых файлах. cmd.exe был создан для Windows NT как аналог оболочки COMMAND.COM, использовавшейся в MS-DOS и ранних версиях Windows, поэтому в cmd.exe перешли из MS-DOS такие команды, как cls, chdir, dir, del, copy и другие
Затем появились скриптовые языки (такие как VBScript - диалект Visual Basic, JScript - диалект JavaScript), с помощью которых можно было управлять объектами операционной системы через компонент Windows Script Host (WSH)
Также существовал Windows Management Instrumentation (WMI) - объектный интерфейс, который позволял получать информацию о системе, менять параметры системы. Через WMI взаимодействовали утилиты wmimgmt.msc, winmgmt.exe, wbemtest.exe, wmic.exe (удален в Windows 11 24H2) и mofcomp.exe или платформу .NET
PowerShell появился как заместитель cmd.exe и WSH:
cmd.exe был бедный и плохо читаемый встроенный язык, а работа с объектами системы через утилиты могла вызвать странное поведениеТак, например, выглядит скрипт для cmd.exe, который читает CSV-файл и находит те вторые поля, в котором встречается bee:
@echo off
setlocal enabledelayedexpansion
rem Путь к CSV-файлу
set "file=data.csv"
for /f "tokens=2 delims=," %%a in (%file%) do (
set "field=%%a"
echo !field! | findstr /i "bee" >nul
if !errorlevel! equ 0 (
echo %%a
)
)
В 2006 появилась оболочка PowerShell, которая была разработана на платформе .NET. Тот же скрипт в PowerShell выглядит так:
# Путь к CSV-файлу
$file = "data.csv"
Import-Csv -Header Column1,Column2,Column3 -Delimiter ',' $file | Where-Object {
$_.Column2 -match "bee"
} | ForEach-Object {
$_.Column2
}
Помимо командной оболочки, которая разработана для администрирования и конфигурирования операционных систем Windows, также PowerShell представляет собой:
Первая версия PowerShell 1.0 вышла в 2006 году для Windows XP Service Pack 2, Server 2003 Service Pack 1, Vista и Server 2008
Вторая версия PowerShell 2.0 вышла в 2009 для Windows 7, PowerShell 3.0 - в 2012 для Windows 8
Четвертая версия PowerShell 4.0 для Windows 8.1 вышла в 2013, в которой добавилась поддержка Where и ForEach для фильтрации и итерации объектов, улучшенного дебаггинга, диагностика сети, а также инструменты платформы управления DSC (Desired State Configuration)
В 2017 году вышла версия PowerShell 5.1, которая выходила в двух редакциях:
Из-за того, что функциональные возможности .NET Framework и .NET Core с точки зрения взаимодействия с система разные, то эти издания имеют разные командлеты
Версия PowerShell 6.0, вышедшая в 2018 на основе .NET Core, стала первой кроссплатформенной.Последняя версия на 2026 год - это PowerShell 7.6, вышедшая в марте 2026 и основанная на .NET 10
PowerShell можно получить через:
wingetТакже PowerShell имеет собственный редактор скриптов PowerShell ISE (от Integrated Scripting Environment - интегрированная среда создания скриптов). Начиная с PowerShell 7, редактор PowerShell ISE устарел, его заменил Visual Studio Code с расширением PowerShell
Основными расширениями PowerShell являются:
.ps1 - файлы скриптов (исторически сложилось название от первой версии оболочки).psd1 - файлы данных скриптов.psm1 - файлы модулей скриптов.ps1xml - файлы конфигурации на языке XMLPowerShell строится на командлетах (cmdlet) - командах, с помощью которых можно осуществлять взаимодействие с объектами операционной системы
Чаще всего название командлета строится по шаблону Глагол-Существительное, где Глагол может быть Add, Clear, Enable и так далее
Например:
Get-Command cmdlet - найти командлеты (например, Get-Command -Verb Get находит все, у которых Глагол - это Get)Get-Help cmdlet - встроенная справка о командлете (флаг -Online для открытия веб-страницы)Get-Member object - возвращает свойства и методы у объектаКомандлеты:
Имена командлетов не чувствительны к регистру (можно написать и
get-process, и Get-Process, и GeT-pRoCeSs), а после командлетов не обязательно ставить ;, за исключением, когда выполняется несколько командлетов в одну строку (например, Get-Process; Get-Service)
Windows имеет механизм безопасности выполнения скриптов, которых выражается в 6 политиках выполнения:
Restricted - блокируется выполнение любых сценариев (по умолчанию на Windows для ПК)AllSigned - разрешено выполнение сценариев, которые имеют цифровую подписьRemoteSigned - разрешено выполнение локальных сценариев, все скачанные сценарии должны иметь цифровую подпись (по умолчанию на Windows Server, начиная с Server 2012 R2)Unrestricted - разрешено выполнение любых сценариев (не рекомендуется, так как небезопасно)Bypass - политика, при которой скрипт запущен внутри другого приложения со своей моделью безопасности, поэтому выполнение скриптов не блокируетсяUndefined - политика не определена (используется политика по умолчанию)Политики выполнения определены для 5 областей видимости:
MachinePolicy - групповая область всех пользователей на этом компьютереUserPolicy - групповая область текущего пользователяProcess - область текущей сессии PowerShellCurrentUser - область текущего пользователяLocalMachine - область всех пользователей на этом компьютереПолитику можно устанавливать через Set-ExecutionPolicy, а узнать через Get-ExecutionPolicy
На компьютерах без Windows доступна только единственная политика - Unrestricted
PowerShell также позволяет удаленно выполнять скрипты через службу WinRM по протоколу HTTP/HTTPS (порт 5985 для HTTP, 5986 для HTTPS). Удаленное выполнение на целевом компьютере включается через Enable-PSRemoting
Чтобы войти в удаленную сессию, используется команда Enter-PSSession:
Enter-PSSession -ComputerName SRV-01
Здесь SRV-01 - имя хоста (также можно указать IP-адрес). После прохождения аутентификации, можно ввести нужный командлет. Однако:
nslookup, netshТакже можно запустить скрипт на нескольких узлах с помощью командлета Invoke-Command:
Invoke-Command -ComputerName SRV-01, SRV-02 -ScriptBlock { ... }
Через аргумент -ScriptBlock можно передать набор команд, а через -FilePath - путь к скрипту на компьютере, где выполняется Invoke-Command. При выполнении скрипта по -FilePath нужно быть внимательным, так как область выполнения - удалённые машины, поэтому переменные среды могут быть разными
Настройки сессии можно сохранять с помощью командлета New-PSSession:
$sessions = New-PSSession -ComputerName s1, s2, c1 -Port 5555 -Credential DOMAIN\Admin
Фоновыми задачами в PowerShell можно управлять через следующие командлеты:
Start-Job - запустить фоновую задачуStop-Job - остановить фоновую задачуGet-Job - посмотреть список фоновых задачReceive-Job - посмотреть результат выполнения фоновой задачиRemove-Job - удалить фоновую задачуWait-Job - заблокировать консоль, пока задача не завершитсяКомментарии в PowerShell бывают:
# строчные
<#
и блочные
#>
Переменные создаются через $имя_переменной = значение. Значение переменной можно получить через $имя_переменной или Get-Variable имя_переменной. Все переменные в текущей сессии хранятся в словаре Variable
В конвейере текущий элемент обозначается через $_
Переменные в PowerShell имеют свой тип - его можно указать (например, [int]$MyIntVar = 5, где типом может быть [int] - целое 32-битное число, [single] - 32-битное число с плавающей точкой, [Boolean] - булевое значение и так далее) или не указывать (тогда переменная может изменить тип при смене значения)
Для присвоения глобальных значений используется синтаксис $Global:переменная = значение
Списки обозначаются как [int[]]$Array = 1, 3, 5, 7, 9, индексируются как $Array[2]
Хеш-таблицы строятся как $ht = @{w1 = "I"; w2 = "LOVE"; w3 = "POWERSHELL"}, доступ через $ht.w1, добавление через $ht.Add("w4", "REALLY") или $ht.w4 = "REALLY"
Условные конструкции в PowerShell есть такие:
IF (...) { ... }IF (...) { ... } ELSE { ... }IF (...) { ... } ELSEIF (...) { ... } ELSE { ... }Конструкция SWITCH:
SWITCH (переменная) {
0 { ... }
1 { ... }
default { ... }
}
Для сравнения используются операторы:
-eq - равно-ne - не равно-gt (от greater than) - больше-lt (от less than) - меньше-ge (от greater or equal) - больше или равно-le (от less or equal) - меньше или равно-like - символ подстановки, например "PowerShell" -like "PowerS*" равно истине-notlike - отрицание символа подстановки-contains - содержит ли значение слева значение справа, например 1, 2, 3, 4, 5 -contains 3 равно истине-notcontains - отрицание -contains-match - совпадение регулярному выражению, например $str = "http://itmo.ru"; $str -match "^http://(\S+)+(\.ru)$" равно истине-notmatch - отрицание -match-and - логическое И-or - логическое ИЛИ-not - логическое НЕЦиклы в PowerShell представлены 5 типами:
WHILEDO WHILEDO UNTILFORFOREACHДля обработки ошибок используется конструкция TRY ... CATCH:
TRY {
[int]$Number = Read-Host "Введите число"
10 / $Number
} CATCH {
Write-Warning "Некорректное число"
}
Для работы с вводом-выводом существуют командлеты:
Write-Host - вывод на экранRead-Host - чтение с консолиOut-File - запись в файл (аналогично можно использовать >)Export-Csv - экспорт данных в CSV-файлConvertTo-Html - конвертация в HTMLConvertTo-Json - конвертация в JSONConvertFrom-Json - конвертация из JSONФункции в PowerShell создаются так:
function Get-DayLog ($param1, $param2) {
Get-EventLog -LogName Application -Newest $param1 ...
}
Вызывается как обычный командлет:
Get-DayLog -param1 50 -param2 -14
Также возможны указание параметров по умолчанию (function Get-DayLog ($param1, $param2=50) { ... }) и возврат значений (return $InternalVariable)
Модули устанавливаются через Install-Module и Install-Script, а импортируется через Import-Module
Для доступа к WMI есть командлеты:
Get-WmiObject (удален в PowerShell 6.0) - через DCOM
DCOM (Distributed COM) - это традиционный и основной протокол для удалённого вызова WMI. Работает поверх RPC, требует настройки DCOM и брандмауэра, обеспечивает высокий уровень безопасности и авторизации. Медленнее в настройке и сложнее для обхода NAT/Firewall.
Get-CimInstance - через WS-Man (или CIM-WS)
WMI-over-WS-Man - современный протокол, основанный на стандарте WSMan (Web Services for Management). Использует HTTP/HTTPS, проще проходит через NAT/Firewall. Более легкий и гибкий в настройке. Поддерживается удаленное управление через PowerShell. Лучше подходит для кроссплатформенного и облачного управления.
CIM-over-HTTPS - протокол, реализующий стандарт CIM (Common Information Model) поверх HTTPS. Современный, защищённый и стандартизованный способ доступа к управлению. Используется в новых версиях Windows и системах Linux с поддержкой Open Management Infrastructure (OMI)
Одной из частых задач, которую выполняет Windows Server, - это централизованное управление пользователями и доступом в инфраструктуре рабочих станций (чаще всего в офисах). Одним из инструментов для этого является служба каталогов Active Directory, которая обеспечивает информационную безопасность
Информационная безопасность - это процесс обеспечения конфиденциальности, целостности и доступности информации, где:
Для обеспечения доступа существуют 3 процесса:
Аутентификация (от англ. authentication) - процесс проверки принадлежности субъекту прав доступа к информационным ресурсам системы
Субъекты (например, пользователь или устройство) идентифицируются по идентификатору безопасности (Security ID, SID), который уникален в пределах жизни системы. Имя субъекта и разрешения являются атрибутами структуры, привязанной к идентификатору безопасности
Аутентификацию можно осуществлять по:
Также аутентификация бывает:
Авторизация - процесс проверки прав пользователя на осуществление определенных действий в системе. Авторизация проходит в два последовательных этапа:
Главным образом авторизация необходима для сохранения конфиденциальности и целостности информации в системе
Всего есть два классических механизма для обеспечения безопасности:
Дискреционное управление доступом (Discretionary Access Control, DAC), обычно в форме списка управления доступом (Access-Control List, ACL)
Список управления доступом состоит из записей контроля доступа (Access-Control Entry, ACE) и определяет права субъектов на объект, к котором привязан список. Такой список может наследоваться и дополняться при наследовании
Запись контроля доступа содержит идентификатор безопасности (SID), маску разрешений и маску запретов. Из вычитания множества запретов из множества разрешений образуются эффективные права, которые применяются в данный момент
Запреты полезны в тех случаях, если нужно, чтобы пользователь имел меньше прав, чем предоставляется другим пользователям в его группе (маску запретов также называют фильтром наследования прав в операционной системе Novell NetWare и службе каталогов Novell eDirectory)
Такая модель чаще всего используется в операционных системах (например, в Linux и других системах по стандартам POSIX), в базах данных (в том числе СУБД от Microsoft) и файловых системах (в том числе NTFS)
Мандатное управление доступом (Mandatory Access Control, MAC), где пользователь не может полностью управлять доступом к ресурсам, которые он создает, а доступ определяет политика системы по меткам
Можно выделить 3 архитектуры безопасности:
Служба каталогов - это сетевой сервис, предоставляющий централизованные средства управления ресурсами автоматизированной системы
Основные функции службы каталогов - это управление пользователями, управление ресурсами, разграничение прав доступа, поиск ресурсов, распространение сетевых политик и интеграция с другими сервисами
Примерами служб каталогов являются:
По умолчанию в каждой операционной системе Windows (в том числе потребительской версии) для локальной аутентификации используется подсистема локальной безопасности (Local Security Authority, LSA) и диспетчер учетных записей безопасности (Security Account Manager, SAM)
Active Directory (AD) - это служба каталогов, появившаяся в Windows 2000 Server, которая обеспечивает централизованное управление учетными записями пользователей, компьютерами, правами доступа и политиками безопасности. В Windows Server 2008 служба Active Directory была переименована в Active Directory Domain Services (Службы домена Active Directory, AD DS) для различения от других продуктов семейства: Certificate Services (AD CS), Federation Services (AD FS), Lightweight Directory Services (AD LDS) и Rights Management Services (AD RMS)
Active Directory позволяет решить такие проблемы как множественная аутентификация, управление учетными записями, масштабирование систем аутентификации и авторизации
Особенности Active Directory:
Active Directory хранит сведения идентификации пользователей, приложений и ресурсов в базе данных ntds.dit, которая основана на технологии Extensible Storage Engine (ESE, также известна как JET Blue - от Joint Engine Technology) и способна работать с несколькими хозяевами (multi-master). Все данные в этой базе данных могут изменяться на любом узле, кроме тех узлов, что установлены в режим для чтения
Для доступа к данным можно использовать открытые протоколы (LDAP) или стандартизованные интерфейсы ADSI (Active Directory Service Interfaces) с множеством интерфейсов COM (Component Object Model). Также Active Directory позволяет создавать и расширять собственные объекты и атрибуты
Для поиска объектов можно использовать стандартизированные запросы или стандартные интерфейсы доступа к объектам
Также ntds.dit может храниться в виде реплик на разных контроллерах домена (компьютеры, которые управляют AD DS), а данные могут изменяться на любом из них и реплицироваться на другие контроллеры. Репликация каталога SYSVOL с данными AD DS разделяется на два направления:
В репликации участвует служба DFS-R (Distributed File System Replication) через протокол RPC (Remote Procedure Call). Ранее репликация производилась через службу FRS (File Replication Service), и была поддержка репликации через почтовый протокол SMTP (Simple Mail Transfer Protocol)
Active Directory обладает встроенными возможностями устойчивости к отказам. База данных со множеством хозяев и имеющиеся контроллеры домена позволяют пользователям продолжать аутентификацию и авторизацию из любого доступного контроллера домена в любой момент времени
Active Directory также обладает гибким механизмом назначения прав на основе списка управления доступом (ACL) и позволяет применять различные виды аутентификации, такие как парольные методы, сертификаты, аппаратные ключи и так далее. Для аутентификации применяются протоколы Kerberos 5 и NTLM (New Technology LAN Manager, протокол ныне устарел)
Также Active Directory поддерживает технологию единого входа SSO (Single Sign-On) - сторонние приложения и сервисы (в том числе за пределами экосистемы Windows) могут аутентифицироваться в AD DS, что обеспечивает простоту управления учетными данными и единые механизмы интеграции
Помимо этого Active Directory позволяет гибко настраивать среду через групповые политики и административные шаблоны, а также помогает проводить аудит - процесс независимой проверки и оценки конфигураций и результатов работы
Основным компонентом в Active Directory является домен (Domain). Домены объединяются в деревья доменов (Domain Tree), а деревья - в леса. Внутри домена существуют организационные подразделения (OU, Organizational Unit), а они в свою очередь хранят объекты (так называемые листья) - пользователи, группы, компьютеры, принтеры, каталоги и прочее
Организационное подразделение является контейнерным объектом и соответствует административному подразделению организации (например, разные отделы - бухгалтерия, маркетинг и так далее), но может решать технические задачи (например, по региональной принадлежности). Организационное подразделение служит для группировки объектов, применения групповых политик и делегирования управления
Домен является минимальной областью безопасности в AD DS и основным контейнерным объектом, соответствует бизнес-организации и имеет свои собственные характеристики, границы и ресурсы. Также домен имеет свое доменное имя
Дерево доменов (Domain Tree) является коллекцией доменов (одного или нескольких), которая отражает организационную структуру
Домены в дереве ограничены связью предок-потомок. Самый первый домен в выбранном дереве домена именуется родительским доменом и также является корневым доменом. Все прочие домены в этом дереве называют доменами потомков или дочерними доменами. Внутри дерева доменов домены образуют непрерывное пространство имен DNS, таким образом, имя DNS домена-родителя является суффиксом имени DNS домена-ребенка

Лесом называют полностью самостоятельную организацию Active Directory, которая имеет определенный набор атрибутов и является периметром безопасности организации. В состав леса могут входить как одно, так и несколько доменных деревьев. Все объекты, создаваемые внутри леса, имеют общий набор атрибутов, который определяется схемой Active Directory
Для именования объектов используется несколько способов:
LDAP://server.firma.local/CN=Fedor Sumkin,OU=My-Unit,DC=Firma,DC=localCN=Fedor Sumkin,OU=My-Unit,DC=Firma,DC=localCN=Fedor SumkinFirma.local\My-Unit\Fedor SumkinFedor@firma.localМежду доменами могут быть установлены доверительные отношения для обеспечения доступа к ресурсам одного домена пользователям другого:
Также доверительные отношения можно установить между доменом и сторонним сервисом, поддерживающим Kerberos (Доверие области, Realm Trust)
Компьютер, который работает под управлением Windows Server и выполняет роль Службы домена Active Directory (AD DS), называют контроллером домена
Контроллер домена может быть и физическим, и виртуальным (то есть с установленной AD DS на виртуальную машину). Количество контроллеров внутри одного пространства имен практически не ограничено
Уровень функциональности контроллера домена определяет набор правил поведения службы каталогов на уровне схемы, протоколов, встроенных атрибутов и другое. Такой уровень определяется версией Windows Server, но для обратной совместимости современные версии поддерживают уровни из старых версий Windows (например, AD DS в Windows Server 2012 R2 может работать на уровне функциональности Windows Server 2008), что позволяет сделать миграцию на новые версии ОС плавнее. Выделяют уровень функциональности для домена и для леса
Контроллеры равнозначны, но могут выполнять уникальные роли FSMO (Flexible Single-Master Operation), которые гарантируют синхронизацию данных. Всего таких ролей 5:
Уникальных для одного леса:
Уникальных для одного домена:
Также существует особый контроллер домена - “центральный справочник” (или сервер глобального каталога), который нужен для поиска объектов без рекурсивного обхода дерева и поиска по основным атрибутам
В файловой системе Windows служба каталогов Active Directory использует:
ntds.dit, хранящий базу данныхedb.logedbxxxxx.logedb.chk для протоколирования транзакций для отметки времени внесения обновлений из файлов журналов в ntds.dittemp.edb, в котором хранится информация о текущих транзакциях, а также страницы, извлеченные из базы данных ntds.dit во время сжатияРанее использовались файлы res1.log и res2.log, которые являлись резервными файлами журнала и использовались в случае переполнения системного раздела (сейчас эту роль выполняется монитор ресурсов)