Windows Server для самых маленьких. Часть 1: Windows Server с нуля

Это первая статья серии «Windows Server для самых маленьких». Серия для тех, кто хочет понять, как устроен Windows Server и Active Directory изнутри: что происходит между нажатием Ctrl+Alt+Del и появлением рабочего стола, как контроллеры договариваются между собой, что лежит в каталоге и как это читать. К концу серии мы будем ходить по каталогу через LDAP, разбирать билеты Kerberos по полям и переносить роли между контроллерами.

У серии два принципа.

Первый: о каждом компоненте — не только зачем он нужен, но и как он работает. Какие объекты появляются в каталоге, какие пакеты идут по сети, что ломается и почему. Поэтому почти в каждой части будет вывод команд, журналы событий и разбор того, что в них написано.

Второй: всё делаем из PowerShell, а не мышкой. Оснастки и мастера в Windows Server есть, и иногда мы будем говорить «вот так это выглядит в UI», но основной путь — команда. Причин три. Команду можно повторить, положить в скрипт и выполнить на двадцати серверах; команду можно показать в статье точнее любого скриншота; и на Server Core, где графической оболочки нет, другого пути просто не существует.

План серии такой. Сначала основа: установка сервера, работа с дисками и сетью, устройство Active Directory. Затем домен: первый контроллер, LDAP и Kerberos изнутри, DNS, DHCP для IPv4 и IPv6, второй контроллер и репликация, контроллер только для чтения, время. Потом управление: модуль ActiveDirectory, PowerShell Remoting через WinRM, инструменты на рабочей станции, SSH с PowerShell в роли оболочки. Дальше эксплуатация: роли FSMO, диагностика, замена контроллеров, резервное копирование. Затем леса и доверие между ними, групповые политики, удостоверяющий центр, NPS с RADIUS для Wi-Fi и VPN, Linux-машины в домене и синхронизация с Entra ID. Статьи выходят по одной, и в конце каждой написано, что будет в следующей.

Протоколы, которые уже разобраны в серии «Сети для самых маленьких», заново разбирать не будем: когда дойдём до DNS или DHCP, я буду ссылаться на те статьи и напоминать суть в двух фразах.


Что понадобится

Для повторения примеров хватит одного компьютера с виртуализацией. Подойдёт Hyper-V в Windows 10/11 Pro, VMware Workstation, VirtualBox или KVM на Linux. Лабораторная сеть серии такая:

                     192.168.1.0/24  (сайт Office)
   ┌──────────────┬──────────────┬──────────────┬──────────────┐
   │              │              │              │              │
 dc1.corp.      dc2.corp.      srv1.corp.     ws1.corp.      роутер
 example.com    example.com    example.com    example.com    192.168.1.1
 .10            .11            .20            .100
 контроллер     контроллер     рядовой        Windows 11
 DNS, DHCP      DNS, DHCP      сервер         с RSAT

Домен будет называться corp.example.com с NetBIOS-именем CORP. Имена и адреса в серии нейтральные: example.com зарезервирован под документацию и никуда не ведёт, а 192.168.1.0/24 есть у каждого дома. Позже появятся второй сайт 192.168.2.0/24, IPv6-префикс 2001:db8:1::/64 и партнёрский лес partner.example.net для разговора о доверии.

Образ Windows Server берётся с Evaluation Center Microsoft: ISO работает 180 дней без ключа, и этого хватит на всю серию. Для виртуальной машины контроллера достаточно двух виртуальных процессоров, 2 ГБ памяти и диска на 40 ГБ.


Редакции, каналы и версии

Прежде чем ставить, нужно выбрать три вещи: редакцию, вариант установки и версию.

Редакции. У Windows Server их две основные:

Standard Datacenter
Виртуальные машины Hyper-V две на лицензию без ограничений
Storage Spaces Direct, Storage Replica без ограничений, SDN, Shielded VM нет есть
Всё остальное: AD, DNS, DHCP, файлы, IIS, RDS, кластеры одинаково одинаково

Разница только в виртуализации и хранилищах. Контроллеру домена, файловому или веб-серверу от Datacenter ничего не нужно, а стоит он в несколько раз дороже. Есть ещё Essentials для организаций до 25 пользователей с особыми ограничениями и Datacenter: Azure Edition, которая существует только в Azure и Azure Stack HCI и получает некоторые функции раньше остальных.

Лицензируется Windows Server по ядрам процессора: минимум 16 ядер на сервер и по 8 на каждый физический процессор, плюс клиентские лицензии CAL на каждого пользователя или устройство, которые к серверу обращаются. В этой серии лицензирование нас больше не интересует: пробная версия работает 180 дней, а при желании превращается в полную одной командой с ключом, об этом в конце статьи.

Вариант установки. В установщике каждая редакция встречается дважды: просто «Standard» и «Standard (Desktop Experience)». Первое — Server Core: без рабочего стола, проводника и оснасток, после входа открывается окно командной строки. Второе — привычный Windows с графической оболочкой.

Server Core — рекомендуемый вариант для всего, что не требует графики на самом сервере: контроллеры домена, DNS, DHCP, файловые серверы, Hyper-V, IIS. Он занимает в несколько раз меньше места на диске и в памяти, у него меньше обновлений и меньше перезагрузок, и площадь атаки у него тоже меньше: нет браузера, нет проводника, нет половины библиотек, в которых находят уязвимости. Управляется он удалённо — из PowerShell, оснасток на рабочей станции, Windows Admin Center — и именно так мы и будем работать. Desktop Experience нужен, когда на сервере работает приложение с окнами или когда администрировать сервер будут локально, с консоли.

Важно: выбор делается при установке и потом не меняется. В Windows Server 2012 можно было добавить или убрать оболочку командой, начиная с 2016 — только переустановкой.

Версии и каналы. Основной канал — LTSC (Long-Term Servicing Channel): выпуск раз в два-три года, пять лет основной поддержки и пять расширенной:

Версия Выход Конец расширенной поддержки
Windows Server 2016 2016 январь 2027
Windows Server 2019 2018 январь 2029
Windows Server 2022 2021 октябрь 2031
Windows Server 2025 2024 октябрь 2034

Есть ещё Annual Channel для контейнеров: новая версия каждый год, поддержка 18 месяцев, только Server Core и только по подписке. Для серверов общего назначения он не нужен.

В серии используется Windows Server 2025, но почти всё, что здесь написано, работает начиная с 2016: Active Directory за эти годы менялся мало, а командлеты — ещё меньше. Где различия есть, я их отмечу.


Установка

Загружаемся с ISO. Установщик спрашивает язык и раскладку, образ (здесь выбирается редакция и вариант), принимает лицензию, предлагает тип установки — нужен Custom, не Upgrade, — и диск. Разделы на пустом диске он создаёт сам: EFI-раздел на 100 МБ, служебный MSR на 16 МБ, системный раздел на всё остальное и раздел восстановления. Трогать это не нужно, а если нужно (например, вы хотите системный раздел определённого размера), в следующей части разберём diskpart, который делает то же самое из консоли.

Два слова о платформе. Windows Server 2025 требует UEFI и поддерживает Secure Boot; TPM 2.0 не обязателен, но нужен для BitLocker и некоторых функций безопасности. В Hyper-V это виртуальная машина второго поколения с включённым Secure Boot (шаблон Microsoft Windows) и, при желании, виртуальным TPM. VirtualBox и VMware тоже умеют UEFI, но его нужно включить в настройках машины до установки.

После копирования файлов и пары перезагрузок установщик просит задать пароль встроенного администратора. Пароль нужен сложный: по умолчанию действует политика минимум семь символов и три категории из четырёх (строчные, прописные, цифры, спецсимволы). Этот пароль станет паролем восстановления служб каталогов, когда сервер превратится в контроллер, так что лучше сразу выбрать такой, какой вы потом вспомните.

Входим. На Server Core появляется чёрное окно cmd.exe, и поверх него, начиная с Windows Server 2022, автоматически запускается sconfig — текстовое меню с номерами пунктов: домен, имя, обновления, удалённое управление, сеть, дата и время. Через него можно сделать всё, что описано ниже, но мы его закроем (пункт 15) и будем делать то же самое командами: во-первых, чтобы понимать, что происходит, во-вторых, потому что команды пригодятся в скриптах, а меню — нет. На Desktop Experience вместо консоли открывается Server Manager; его тоже закрываем и открываем PowerShell через правый клик на кнопке Пуск или Win+X.


Первые минуты в PowerShell

В Windows Server встроен Windows PowerShell 5.1 — тот, что запускается командой powershell. Он никуда не делся и не денется: на нём работают все модули управления ролями. Параллельно существует PowerShell 7 (pwsh), кроссплатформенный и активно развиваемый; его ставят отдельно, и в серии мы будем пользоваться встроенным 5.1: он гарантированно есть на каждом сервере, а разница в синтаксисе для наших задач не важна. На Server Core, где нет winget, PowerShell 7 устанавливается так:

Invoke-WebRequest -Uri https://aka.ms/install-powershell.ps1 -OutFile install-powershell.ps1
.\install-powershell.ps1 -UseMSI -Quiet

Три вещи, которые нужно знать о PowerShell, прежде чем двигаться дальше.

Команды возвращают объекты, а не текст. Когда Get-Service печатает таблицу, это не строки: это объекты ServiceController со свойствами и методами, которые консоль в последний момент отформатировала в таблицу. Поэтому с результатом можно работать дальше:

PS C:\> Get-Service | Where-Object Status -eq 'Running' | Sort-Object DisplayName | Select-Object -First 3

Status   Name               DisplayName
------   ----               -----------
Running  BFE                Base Filtering Engine
Running  BrokerInfrastru... Background Tasks Infrastructure Service
Running  CDPSvc             Connected Devices Platform Service

Что у объекта внутри, показывает Get-Member:

PS C:\> Get-Service W32Time | Get-Member -MemberType Property

   TypeName: System.ServiceProcess.ServiceController

Name                MemberType Definition
----                ---------- ----------
CanPauseAndContinue Property   bool CanPauseAndContinue {get;}
CanShutdown         Property   bool CanShutdown {get;}
CanStop             Property   bool CanStop {get;}
DependentServices   Property   System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName         Property   string DisplayName {get;set;}
...
StartType           Property   System.ServiceProcess.ServiceStartMode StartType {get;}
Status              Property   System.ServiceProcess.ServiceControllerStatus Status {get;}

В таблице по умолчанию видны три свойства, а у объекта их полтора десятка. Привычка смотреть Get-Member и Format-List * экономит часы: почти всегда нужное свойство уже есть, его просто не показывают.

Команды находятся по имени. Все командлеты называются «Глагол-Существительное», глаголов ограниченный набор (Get, Set, New, Remove, Add, Install, Enable, Test, Start, Stop, …), и это позволяет угадывать:

PS C:\> Get-Command -Noun NetIPAddress

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-NetIPAddress                                   1.0.0.0    NetTCPIP
Function        New-NetIPAddress                                   1.0.0.0    NetTCPIP
Function        Remove-NetIPAddress                                1.0.0.0    NetTCPIP
Function        Set-NetIPAddress                                   1.0.0.0    NetTCPIP

PS C:\> Get-Command -Module DnsServer | Measure-Object | Select-Object Count
Count
-----
  132

Справка: Get-Help New-NetIPAddress -Full или -Online (откроет документацию в браузере на рабочей станции). На чистом сервере локальной справки нет, её скачивает Update-Help.

Опасные команды умеют репетировать. Параметр -WhatIf показывает, что команда сделала бы, не делая этого; -Confirm спрашивает перед каждым действием. Когда через двадцать частей мы будем удалять контроллер из каталога, это пригодится.


Имя сервера

Установщик даёт машине случайное имя вида WIN-A1B2C3D4E5F. Меняем:

PS C:\> Rename-Computer -NewName dc1 -Restart

Имя — до 15 символов (это ограничение NetBIOS, которое никуда не делось), латиница, цифры и дефис. Перезагрузка обязательна: имя компьютера читается при старте.

Имени нужен ещё DNS-суффикс, чтобы сервер знал своё полное имя dc1.corp.example.com. У члена домена суффикс появляется автоматически при вступлении в домен, а у первого контроллера — при создании леса, так что здесь его задавать не нужно. Если зачем-то нужно задать руками у автономного сервера, это ключ реестра:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters' -Name 'NV Domain' -Value 'corp.example.com'

Сеть

После установки у адаптера адрес от DHCP, если DHCP в сети есть. Серверу, а особенно будущему контроллеру и DNS-серверу, нужен статический адрес: его будут искать по адресу все клиенты сети.

Смотрим, что есть:

PS C:\> Get-NetAdapter

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet                  Microsoft Hyper-V Network Adapter             4 Up           00-15-5D-01-02-03        10 Gbps

PS C:\> Get-NetIPConfiguration

InterfaceAlias       : Ethernet
InterfaceIndex       : 4
InterfaceDescription : Microsoft Hyper-V Network Adapter
NetProfile.Name      : Network
IPv4Address          : 192.168.1.137
IPv6Address          : 2001:db8:1::a1b2:c3d4:e5f6:1234
IPv4DefaultGateway   : 192.168.1.1
IPv6DefaultGateway   : fe80::1
DNSServer            : 192.168.1.1

Адаптер называется Ethernet, и это имя мы будем указывать в командах. Если адаптеров несколько, их полезно переименовать по назначению: Rename-NetAdapter -Name 'Ethernet 2' -NewName 'Storage'.

Переводим IPv4 на статику. Порядок важен: сначала выключить DHCP на интерфейсе, иначе клиент DHCP продолжит переписывать настройки; потом убрать адрес и маршрут, полученные от DHCP; потом задать свои:

Set-NetIPInterface -InterfaceAlias Ethernet -AddressFamily IPv4 -Dhcp Disabled
Remove-NetIPAddress -InterfaceAlias Ethernet -AddressFamily IPv4 -Confirm:$false
Remove-NetRoute -InterfaceAlias Ethernet -AddressFamily IPv4 -DestinationPrefix 0.0.0.0/0 -Confirm:$false
New-NetIPAddress -InterfaceAlias Ethernet -IPAddress 192.168.1.10 -PrefixLength 24 -DefaultGateway 192.168.1.1
Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 192.168.1.1

Две ловушки. New-NetIPAddress -DefaultGateway откажется работать, если маршрут по умолчанию на этом интерфейсе уже есть, отсюда Remove-NetRoute строкой выше. И адрес DNS мы пока указываем роутер: когда сервер станет контроллером, он станет и DNS-сервером, и мы это поменяем в части про первый контроллер: там свои правила про то, куда контроллер должен смотреть за DNS.

Про IPv6 одно правило: не выключайте его. Часть служб Windows (Exchange, отказоустойчивые кластеры, часть RPC) ожидает, что IPv6 есть, хотя бы в виде link-local-адреса fe80::…. Если в сети нет IPv6-маршрутизатора, адаптер получит только link-local и будет работать поверх IPv4, никому не мешая. Если IPv6 в сети есть, адрес и шлюз придут сами по Router Advertisement, как в части 15 сетевой серии; статический IPv6-адрес задаётся тем же New-NetIPAddress с префиксом 64.

Проверяем:

PS C:\> Test-NetConnection -ComputerName www.vitaliy.org -Port 443

ComputerName     : www.vitaliy.org
RemoteAddress    : 203.0.113.65
RemotePort       : 443
InterfaceAlias   : Ethernet
SourceAddress    : 192.168.1.10
TcpTestSucceeded : True

Test-NetConnection — замена ping, tracert (с -TraceRoute) и telnet host port в одной команде, и она показывает, с какого адреса и интерфейса пошло соединение, что при нескольких адаптерах важнее всего остального.

Настройки адаптера, которые мы сейчас сделали четырьмя командлетами, старые руководства делают через netsh interface ip set address. Это не устарело и иногда незаменимо, разговор об этом в следующей части.


Время

Служба времени Windows называется W32Time. У автономного сервера она по умолчанию синхронизируется с time.windows.com раз в неделю, у члена домена — с контроллером, у контроллера — с владельцем роли PDC-эмулятора, а у того — с тем, что ему укажут. Почему время в домене так важно, что ему посвящена отдельная часть: Kerberos отвергает билеты, если часы клиента и сервера расходятся больше чем на пять минут. Пока задача проще — чтобы время на сервере было правильным.

Часовой пояс:

PS C:\> Get-TimeZone

Id                         : Pacific Standard Time
DisplayName                : (UTC-08:00) Pacific Time (US & Canada)
...

PS C:\> Set-TimeZone -Id 'W. Europe Standard Time'

Список идентификаторов: Get-TimeZone -ListAvailable. Обратите внимание, что часовой пояс не влияет на то, какое время сервер считает «сейчас»: внутри всё хранится в UTC, пояс нужен только для показа и для журналов.

Источник времени у автономного сервера. Для W32Time нет командлетов, только утилита w32tm:

PS C:\> w32tm /query /status
Leap Indicator: 0(no warning)
Stratum: 4 (secondary reference - syncd by (S)NTP)
Precision: -23 (119.209ns per tick)
Root Delay: 0.0312500s
Root Dispersion: 7.7812500s
ReferenceId: 0xC0A80101 (source IP:  192.168.1.1)
Last Successful Sync Time: 15.10.2026 10:42:17
Source: 192.168.1.1
Poll Interval: 10 (1024s)

Здесь источник пришёл по DHCP (опция 42). Чтобы задать свои серверы NTP:

w32tm /config /manualpeerlist:"0.pool.ntp.org,0x8 1.pool.ntp.org,0x8" /syncfromflags:manual /reliable:no /update
w32tm /resync

0x8 после имени — режим клиента (client mode): запрос раз в интервал опроса, а не симметричный обмен между равными. Stratum в выводе — удаление от эталонных часов: у атомных часов 0, у сервера, который берёт с них время, 1, у нас 4.

Если сервер виртуальный, есть ещё один источник: гипервизор. Hyper-V через службу интеграции подводит часы гостя к часам хоста, VMware делает то же самое через VMware Tools. Для рядового сервера это удобно, для контроллера домена — источник путаницы, который мы разберём, когда дойдём до времени в домене.


Обновления

Свежеустановленный сервер отстаёт от текущих обновлений на месяцы. На Server Core с Windows Server 2022 обновления можно поставить из sconfig (пункт 6), но мы обещали команды. Встроенного командлета для Windows Update нет; есть модуль PSWindowsUpdate из PowerShell Gallery, ставший стандартом де-факто:

Install-PackageProvider -Name NuGet -Force
Install-Module -Name PSWindowsUpdate -Force
Get-WindowsUpdate

Первая команда нужна один раз: PowerShell 5.1 не умеет работать с галереей без провайдера NuGet. Если Install-Module жалуется на TLS (это случается на Windows Server 2016), перед ним выполняется [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12.

PS C:\> Get-WindowsUpdate

ComputerName Status     KB          Size Title
------------ ------     --          ---- -----
DC1          -D-----    KB5062553  912MB 2026-10 Cumulative Update for Microsoft server operating system version 24H2 for x64-based Systems
DC1          -D-----    KB5061101   58MB 2026-10 Servicing Stack Update for Microsoft server operating system version 24H2 for x64-based Systems

PS C:\> Install-WindowsUpdate -AcceptAll -AutoReboot

Обновления Windows Server с 2016 года кумулятивные: каждое месячное содержит все предыдущие, поэтому «поставить всё» — это одно большое обновление и один стек обслуживания, и две перезагрузки в худшем случае. Что уже стоит, показывает Get-HotFix:

PS C:\> Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 3

Source  Description      HotFixID   InstalledBy          InstalledOn
------  -----------      --------   -----------          -----------
DC1     Security Update  KB5062553  NT AUTHORITY\SYSTEM  15.10.2026 0:00:00
DC1     Update           KB5061101  NT AUTHORITY\SYSTEM  15.10.2026 0:00:00
DC1     Update           KB5058499                       02.09.2026 0:00:00

Автоматические обновления на сервере — вопрос политики. По умолчанию сервер скачивает и ставит их сам, а перезагружается в «часы вне активности», что для контроллера домена в три часа ночи обычно приемлемо, а для сервера баз данных — нет. Поведение задаётся групповой политикой Windows Update, и мы к ней вернёмся в части про GPO; на отдельном сервере то же самое делается через sconfig (пункт 5) или ключи реестра в HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.


Роли и компоненты

Всё, что умеет Windows Server, разбито на роли (Active Directory Domain Services, DNS Server, DHCP Server, Web Server, Hyper-V, …) и компоненты (features: .NET Framework, Failover Clustering, Telnet Client, инструменты управления). После установки стоит минимум, и это правильно: каждая роль — это службы, порты и обновления.

PS C:\> Get-WindowsFeature | Where-Object InstallState -eq Installed

Display Name                                            Name                       Install State
------------                                            ----                       -------------
[X] File and Storage Services                           FileAndStorage-Services        Installed
    [X] Storage Services                                Storage-Services               Installed
[X] .NET Framework 4.8 Features                         NET-Framework-45-Fea...        Installed
    [X] .NET Framework 4.8                              NET-Framework-45-Core          Installed
    [X] WCF Services                                    NET-WCF-Services45             Installed
        [X] TCP Port Sharing                            NET-WCF-TCP-PortSharing45      Installed
[X] Windows Defender Antivirus                          Windows-Defender               Installed
[X] Windows PowerShell                                  PowerShellRoot                 Installed
    [X] Windows PowerShell 5.1                          PowerShell                     Installed
[X] WoW64 Support                                       WoW64-Support                  Installed

Ставится роль так (пока не выполняем, это тема следующих частей):

Install-WindowsFeature -Name AD-Domain-Services, DNS -IncludeManagementTools

-IncludeManagementTools добавляет модули PowerShell и оснастки для роли. На Server Core оснастки не поставятся (им нужна графика), а модули — да. Удаляется роль Uninstall-WindowsFeature, и некоторые компоненты (например, Desktop Experience) удалить нельзя, о чём уже говорилось.

Отдельная категория — Features on Demand: компоненты, которых нет в образе и которые скачиваются с Windows Update или берутся с отдельного ISO. Сюда входит App Compatibility FOD для Server Core — набор библиотек и утилит из Desktop Experience (Event Viewer, Performance Monitor, Disk Management, часть оснасток), которые можно добавить на Core без установки всей оболочки:

Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0

Полезная вещь, когда на Core нужно открыть eventvwr или diskmgmt локально, но в серии мы постараемся без неё обходиться.


Удалённый доступ

Последнее, что делается в консоли сервера: включить то, через что к нему будут подключаться дальше.

PowerShell Remoting через WinRM на Windows Server включён с момента установки: служба WinRM слушает TCP 5985, правило файрвола для него открыто для локальной подсети. Пока сервер не в домене, подключиться к нему с рабочей станции можно только по паролю и с оговорками (TrustedHosts, об этом в части про WinRM); как только появится домен, подключение заработает по Kerberos без всяких оговорок. Проверить, что служба слушает:

PS C:\> Test-WSMan
wsmid           : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor   : Microsoft Corporation
ProductVersion  : OS: 0.0.0 SP: 0.0 Stack: 3.0

Удалённый рабочий стол по умолчанию выключен. На Server Core он тоже работает: в сеансе RDP вы увидите ту же консоль, только через сеть. Включаем:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
Enable-NetFirewallRule -DisplayGroup 'Remote Desktop'

Первая строка — тот самый ключ реестра, который переключает флажок в свойствах системы; вторая открывает TCP 3389 в файрволе. По умолчанию RDP требует Network Level Authentication (клиент аутентифицируется до создания сеанса), и это правильно, не выключайте.

Файрвол Windows включён, с тремя профилями — Domain, Private, Public — и правилами, привязанными к профилю. Сейчас сервер не в домене, сетевой профиль — Private или Public в зависимости от того, что сеть сообщила о себе; после вступления в домен интерфейс, видящий контроллер, перейдёт в профиль Domain, и часть правил (в том числе для управления) откроется сама. Смотреть, что открыто:

PS C:\> Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction

Name    Enabled DefaultInboundAction
----    ------- --------------------
Domain     True                Block
Private    True                Block
Public     True                Block

PS C:\> Get-NetFirewallRule -Enabled True -Direction Inbound | Where-Object DisplayGroup -like '*Remote*' | Select-Object DisplayName, Profile

Смотрим руками

Что знает о себе только что установленный сервер:

PS C:\> Get-ComputerInfo | Select-Object CsName, OsName, OsVersion, OsBuildNumber, WindowsInstallationType, CsDomainRole, OsUptime

CsName                  : DC1
OsName                  : Microsoft Windows Server 2025 Standard Evaluation
OsVersion               : 10.0.26100
OsBuildNumber           : 26100
WindowsInstallationType : Server Core
CsDomainRole            : StandaloneServer
OsUptime                : 00:12:41.0831245

WindowsInstallationType — Server Core или Server; CsDomainRole — сейчас StandaloneServer, после вступления в домен станет MemberServer, после повышения — BackupDomainController или PrimaryDomainController (так в API до сих пор называются контроллеры: с ролью PDC-эмулятора и без).

Журналы. Графического Event Viewer на Core нет, и это не потеря: Get-WinEvent умеет больше.

PS C:\> Get-WinEvent -LogName System -MaxEvents 5 | Format-Table TimeCreated, Id, ProviderName, LevelDisplayName -AutoSize

TimeCreated           Id ProviderName                      LevelDisplayName
-----------           -- ------------                      ----------------
15.10.2026 10:51:03 7040 Service Control Manager           Information
15.10.2026 10:50:12 1500 Microsoft-Windows-GroupPolicy     Information
15.10.2026 10:49:58  129 Microsoft-Windows-Time-Service    Warning
15.10.2026 10:49:57   37 Microsoft-Windows-Time-Service    Information
15.10.2026 10:49:30 6013 EventLog                          Information

PS C:\> Get-WinEvent -FilterHashtable @{LogName='System'; Level=2,3; StartTime=(Get-Date).AddDays(-1)} |
    Group-Object ProviderName | Sort-Object Count -Descending | Select-Object Count, Name

Вторая команда — шаблон, который мы будем использовать всю серию: ошибки и предупреждения за сутки, сгруппированные по источнику. Пять минут на чтение такого вывода после каждой перезагрузки спасают от большинства сюрпризов.

Активация. У пробной версии 180 дней, остаток показывает slmgr /dlv (это VBScript, вывод в окне сообщения на Desktop Experience и в консоли на Core) или:

PS C:\> Get-CimInstance SoftwareLicensingProduct -Filter "PartialProductKey IS NOT NULL" | Select-Object Name, LicenseStatus, GracePeriodRemaining

Name                                                     LicenseStatus GracePeriodRemaining
----                                                     ------------- --------------------
Windows(R), ServerStandardEval edition                               1               258912

GracePeriodRemaining в минутах: 258 912 минут — это те самые 180 дней. Когда придёт время, пробная редакция превращается в полную без переустановки: DISM /Online /Set-Edition:ServerStandard /ProductKey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX /AcceptEula, две перезагрузки, и сервер лицензирован. Ключ активируется slmgr /ato.


У нас есть сервер с именем, адресом, правильным временем и обновлениями, и к нему можно подключиться по сети. Прежде чем делать из него контроллер домена, стоит разобраться с двумя вещами, без которых не обходится ни одна установка: дисками и сетевой подсистемой на уровне ниже командлетов.

Дальше — Часть 2: диски и сеть через diskpart и netsh. Что делают эти утилиты, чем их заменяет PowerShell (модули Storage, NetTCPIP, NetSecurity), и что по-прежнему умеют только они: от очистки диска до перенаправления портов и захвата трафика без Wireshark.


Серия «Windows Server для самых маленьких»

  1. Windows Server с нуля (эта статья) — редакции, Server Core, установка, первые команды PowerShell, имя, сеть, время, обновления, роли.
  2. Диски и сеть: diskpart, netsh и их PowerShell-замены — разметка дисков и сетевой стек через старые утилиты и модули Storage, NetTCPIP, NetSecurity, и что умеют только утилиты.

Оставить комментарий могут только зарегистрированные пользователи.

Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.