Windows Server для самых маленьких. Часть 2: диски и сеть — diskpart, netsh и их PowerShell-замены
В прошлой части мы настроили адрес четырьмя командлетами из модуля NetTCPIP. Любое руководство старше 2012 года сделает то же самое одной строкой netsh interface ip set address, а разметку диска доверит diskpart. Обе утилиты никуда не делись: они есть на каждом Windows от XP до Server 2025, работают в среде восстановления, где модулей PowerShell может не быть, и умеют несколько вещей, для которых командлетов так и не написали. Поэтому администратору нужно знать обе: и чтобы читать чужие скрипты, и чтобы не остаться без инструмента, когда PowerShell недоступен.
Эта часть устроена как словарь в обе стороны: что делает старая утилита, каким командлетом это делается сейчас, и где командлета нет.
Как Windows видит хранилище
Прежде чем размечать, нужно понимать, что именно размечается. У Windows три уровня:
Диск (Disk) физическое или виртуальное устройство: Disk 0, Disk 1, …
└─ Раздел (Partition) кусок диска с типом и номером: Partition 1, 2, …
└─ Том (Volume) файловая система на разделе, с буквой или без: C:, D:, \\?\Volume{…}
Диск имеет номер (с нуля), стиль разметки, состояние (Online/Offline) и атрибут «только чтение». Стиль разметки — это таблица разделов:
- MBR (Master Boot Record, 1983 год): таблица на четыре записи в первом секторе, адреса на 32 бита, то есть диск до 2 ТБ. Больше четырёх разделов — только через «расширенный» раздел с логическими дисками внутри. Загрузка в режиме BIOS.
- GPT (GUID Partition Table): 128 разделов по умолчанию, диски до 9,4 ЗБ, у каждого раздела GUID-идентификатор и GUID-тип, копия таблицы в конце диска и контрольные суммы. Загрузка в режиме UEFI. Это стандарт для всего, что устанавливается сегодня.
Раздел на GPT-диске имеет тип, и типов, которые встречаются на системном диске Windows, четыре:
| Раздел | GUID типа | Размер | Что внутри |
|---|---|---|---|
| EFI System Partition | c12a7328-f81f-11d2-ba4b-00a0c93ec93b |
100 МБ | FAT32, загрузчик \EFI\Microsoft\Boot\bootmgfw.efi и хранилище BCD |
| Microsoft Reserved (MSR) | e3c9e316-0b5c-4db8-817d-f92df00215ae |
16 МБ | пусто; резерв для служебных нужд, без файловой системы |
| Basic data | ebd0a0a2-0b84-4a0b-9d6b-3b2b5b4b6a5a… |
остальное | NTFS с Windows, то, что получает букву C: |
| Windows RE | de94bba4-06d1-4d40-a16a-bfd50179d6ac |
600–1000 МБ | среда восстановления winre.wim |
Том — файловая система поверх раздела: NTFS, ReFS, FAT32, exFAT. У тома может быть буква, точка монтирования в папке другого тома или ничего (EFI и RE букв не имеют). Для серверов файловая система — NTFS, кроме случаев, когда нужен ReFS: он устойчивее к повреждениям и быстрее работает с виртуальными дисками и базами, но не поддерживает сжатие, квоты, шифрование EFS и не годится для системного тома.
Ещё есть динамические диски — способ собрать из нескольких дисков зеркало или RAID-5 средствами Windows 2000. Они объявлены устаревшими: вместо них Storage Spaces, где из физических дисков собирается пул, а из пула нарезаются виртуальные диски с нужной отказоустойчивостью. В этой серии нам хватит простых дисков.
diskpart
diskpart — не команда, а отдельная оболочка со своим приглашением. Главное, что нужно понять о ней: она работает через контекст. Команда select disk 1 делает диск 1 текущим, и все последующие команды — clean, convert, create — относятся к нему, пока не выбрано что-то другое. Здесь же и главная опасность: clean, выполненный не на том диске, за секунду стирает таблицу разделов, и никакого подтверждения не будет.
Типичный сеанс на новом диске:
PS C:\> diskpart
Microsoft DiskPart version 10.0.26100.1150
Copyright (C) Microsoft Corporation.
On computer: DC1
DISKPART> list disk
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 40 GB 0 B *
Disk 1 Online 100 GB 100 GB
DISKPART> select disk 1
Disk 1 is now the selected disk.
DISKPART> clean
DISKPART> convert gpt
DISKPART> create partition primary
DISKPART> format fs=ntfs label=Data quick
DISKPART> assign letter=D
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 C NTFS Partition 39 GB Healthy Boot
Volume 1 Recovery NTFS Partition 799 MB Healthy Hidden
Volume 2 FAT32 Partition 100 MB Healthy System
Volume 3 D Data NTFS Partition 100 GB Healthy
DISKPART> exit
Что ещё умеет diskpart, и что из этого пригождается:
| Команда | Что делает |
|---|---|
list disk / list partition / list volume / list vdisk |
показать объекты уровня |
select disk N, select partition N, select volume N или буква |
выбрать контекст |
detail disk / detail partition |
подробности: ID, тип, атрибуты, путь устройства |
clean / clean all |
стереть таблицу разделов (быстро) / затереть весь диск нулями |
convert gpt / convert mbr |
сменить стиль разметки пустого диска |
create partition efi size=100, create partition msr size=16, create partition primary [size=МБ] |
создать раздел нужного типа |
format fs=ntfs quick label=X, assign letter=X, assign mount=C:\Mount\X, remove letter=X |
файловая система и буква |
shrink desired=МБ, extend [size=МБ] |
изменить размер раздела |
online disk, offline disk, attributes disk clear readonly |
состояние диска |
san policy=OnlineAll |
как обращаться с новыми дисками (ниже) |
set id= и gpt attributes= |
тип раздела и его атрибуты GPT |
create vdisk file=C:\x.vhdx maximum=10240 type=expandable, attach vdisk, detach vdisk |
виртуальные диски VHD/VHDX без Hyper-V |
rescan |
перечитать шину |
Сценарии для diskpart пишутся в текстовый файл по команде на строку и выполняются diskpart /s script.txt. Так до сих пор размечают диски в скриптах развёртывания и в autounattend.xml.
Ещё один контекст, где без diskpart не обойтись, — среда восстановления и консоль установщика (Shift+F10 в окне установки). PowerShell там либо нет, либо нет модуля Storage, а разобраться с разделами или заново создать EFI-раздел после потери загрузчика нужно именно там:
select disk 0
list partition
select partition 1 ← EFI
assign letter=S
exit
bcdboot C:\Windows /s S: /f UEFI
bcdboot копирует файлы загрузчика с установленной Windows на раздел S: и пересоздаёт конфигурацию загрузки BCD. Эти шесть строк возвращают к жизни сервер, который «не видит диск» после неудачного обновления прошивки или переноса на другой гипервизор.
Модуль Storage
Начиная с Windows Server 2012 всё, что делает diskpart, умеет модуль Storage, причём объектами и по конвейеру. Те же действия на новом диске:
PS C:\> Get-Disk
Number Friendly Name Serial Number HealthStatus OperationalStatus Total Size Partition Style
------ ------------- ------------- ------------ ----------------- ---------- ---------------
0 Msft Virtual Disk Healthy Online 40 GB GPT
1 Msft Virtual Disk Healthy Online 100 GB RAW
PS C:\> Initialize-Disk -Number 1 -PartitionStyle GPT
PS C:\> New-Partition -DiskNumber 1 -UseMaximumSize -DriveLetter D
PS C:\> Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel Data -Confirm:$false
DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining Size
----------- ------------ -------------- --------- ------------ ----------------- ------------- ----
D Data NTFS Fixed Healthy OK 99.89 GB 99.98 GB
RAW в стиле разметки — пустой диск без таблицы. А вот то же самое одной строкой для всех пустых дисков сервера, как это пишут в скриптах подготовки:
Get-Disk | Where-Object PartitionStyle -eq RAW |
Initialize-Disk -PartitionStyle GPT -PassThru |
New-Partition -AssignDriveLetter -UseMaximumSize |
Format-Volume -FileSystem NTFS -NewFileSystemLabel Data -Confirm:$false
Это и есть разница в подходе: diskpart выполняет команды над выбранным контекстом, PowerShell передаёт объекты по конвейеру, и каждый следующий командлет работает с тем, что вернул предыдущий (-PassThru заставляет Initialize-Disk вернуть диск, иначе он ничего не возвращает).
Соответствие остальных команд:
| diskpart | Storage |
|---|---|
list disk / list partition / list volume |
Get-Disk, Get-Partition, Get-Volume; физика — Get-PhysicalDisk |
detail disk |
Get-Disk -Number 1 | Format-List * |
clean |
Clear-Disk -Number 1 -RemoveData -RemoveOEM -Confirm:$false |
convert gpt |
Set-Disk -Number 1 -PartitionStyle GPT (только для пустого) |
create partition primary size= |
New-Partition -DiskNumber 1 -Size 20GB |
create partition efi |
New-Partition -GptType '{c12a7328-f81f-11d2-ba4b-00a0c93ec93b}' -Size 100MB |
format fs=ntfs quick |
Format-Volume -FileSystem NTFS (быстрое по умолчанию, полное — -Full) |
assign letter= / assign mount= |
Set-Partition -NewDriveLetter E, Add-PartitionAccessPath -AccessPath C:\Mount\Data |
shrink / extend |
Resize-Partition -Size …; пределы — Get-PartitionSupportedSize |
online disk, attributes disk clear readonly |
Set-Disk -Number 1 -IsOffline $false -IsReadOnly $false |
san policy=OnlineAll |
Set-StorageSetting -NewDiskPolicy OnlineAll |
attach vdisk |
Mount-DiskImage -ImagePath C:\x.vhdx (и для ISO) |
create vdisk |
New-VHD из модуля Hyper-V; без Hyper-V — только diskpart |
rescan |
Update-HostStorageCache |
Про SAN policy стоит сказать отдельно, потому что она объясняет популярный вопрос «подключил второй диск к серверу, а он Offline». Политика определяет, что делать с диском, впервые увиденным системой. Значение по умолчанию у Windows Server — Offline Shared: диски на общей шине (iSCSI, Fibre Channel, SAS с несколькими хостами) остаются Offline, чтобы два сервера не начали писать на один LUN одновременно, а локальные включаются сразу. Проверить и изменить:
PS C:\> Get-StorageSetting | Select-Object NewDiskPolicy
NewDiskPolicy
-------------
OfflineShared
PS C:\> Set-StorageSetting -NewDiskPolicy OnlineAll
На одиночном сервере OnlineAll безопасна и избавляет от ручного Set-Disk -IsOffline $false при каждом новом диске.
Что остаётся за diskpart. Тонкости GPT — атрибуты раздела (gpt attributes=0x8000000000000001 делает раздел «обязательным», и Disk Management перестаёт предлагать его удалить) и set id= для смены типа раздела — в Storage есть лишь частично через Set-Partition -GptType и -IsHidden. Создание VHD без Hyper-V — только diskpart. И среда восстановления: Storage там недоступен. Во всех остальных случаях модуль удобнее.
netsh
netsh (network shell) появился в Windows 2000 и устроен иначе, чем diskpart: это дерево контекстов, каждый из которых отвечает за свою подсистему и реализован отдельной библиотекой-помощником. Команда netsh interface ipv4 show addresses — это контекст interface, подконтекст ipv4, команда show addresses. Запущенный без аргументов, netsh открывает оболочку, где в контексты можно заходить как в каталоги:
PS C:\> netsh
netsh>interface ipv4
netsh interface ipv4>show addresses "Ethernet"
Configuration for interface "Ethernet"
DHCP enabled: No
IP Address: 192.168.1.10
Subnet Prefix: 192.168.1.0/24 (mask 255.255.255.0)
Default Gateway: 192.168.1.1
Gateway Metric: 256
InterfaceMetric: 15
netsh interface ipv4>exit
Контексты, которые встречаются на серверах:
| Контекст | За что отвечает | Чем заменён |
|---|---|---|
interface ipv4, interface ipv6 |
адреса, маршруты, DNS-серверы, MTU, параметры протоколов | NetTCPIP, DnsClient |
interface tcp |
глобальные параметры TCP: автонастройка окна, ECN, RSS | Get-NetTCPSetting, Set-NetTCPSetting |
interface portproxy |
перенаправление TCP-портов | нет замены |
advfirewall |
Windows Firewall с расширенной безопасностью и IPsec | NetSecurity |
http |
HTTP.sys: сертификаты на портах, резервирование URL | нет замены вне IIS |
winhttp |
системный прокси для служб | нет замены |
trace |
захват трафика и трассировка компонентов в ETL | pktmon |
wlan |
профили Wi-Fi | на серверах не нужен |
winsock, interface ip reset |
сброс стека | нет замены |
dhcpclient, dnsclient |
клиентские части | Get-NetIPInterface, Clear-DnsClientCache |
nps, ras, routing, branchcache, lan |
серверные роли | модули ролей (NPS, RemoteAccess, …) |
dhcp, wins |
старые серверные контексты | удалены: DhcpServer, dnscmd |
У netsh есть две полезные особенности, которых нет у отдельных команд. Любую команду можно выполнить на другой машине ключом -r имя (работает через RPC, в домене — по Kerberos, аналог -ComputerName у командлетов и -CimSession). И у многих set-команд есть store=persistent / store=active: применить навсегда или только до перезагрузки, что удобно для экспериментов с MTU или маршрутами, когда есть риск отрезать себя от сервера.
Сетевые модули PowerShell
Модулей, заменяющих netsh interface и advfirewall, четыре, и в них около двухсот командлетов. Нужный десяток:
NetAdapter — физический и виртуальный адаптер, уровень 2:
Get-NetAdapter # список, состояние, скорость
Get-NetAdapter Ethernet | Get-NetAdapterAdvancedProperty # Jumbo Packet, RSS, VLAN ID, offload'ы
Set-NetAdapterAdvancedProperty Ethernet -DisplayName 'Jumbo Packet' -DisplayValue '9014 Bytes'
Get-NetAdapterBinding Ethernet # какие протоколы привязаны (ms_tcpip6 — IPv6: не трогать)
Restart-NetAdapter Ethernet
Get-NetAdapterStatistics Ethernet # байты, пакеты, ошибки
NetTCPIP — адреса, маршруты, интерфейсы уровня 3, соединения:
Get-NetIPAddress -AddressFamily IPv4 # аналог netsh int ipv4 show addresses
Get-NetIPInterface # DHCP вкл/выкл, метрика, MTU (NlMtu) по интерфейсу и семейству
Set-NetIPInterface Ethernet -AddressFamily IPv4 -NlMtuBytes 1400 # netsh int ipv4 set subinterface mtu=
Get-NetRoute -AddressFamily IPv4 # route print
New-NetRoute -DestinationPrefix 10.10.0.0/16 -InterfaceAlias Ethernet -NextHop 192.168.1.254
Get-NetNeighbor -AddressFamily IPv4 # arp -a; для IPv6 — таблица соседей NDP
Get-NetTCPConnection -State Listen # netstat -an
Get-NetIPv6Protocol # глобальные параметры IPv6
Для сервера с IPv6 из Router Advertisement полезны два параметра Set-NetIPv6Protocol: -UseTemporaryAddresses Disabled отключает временные адреса (сервер, меняющий адрес раз в сутки, никому не нужен), а -RandomizeIdentifiers Disabled заставляет строить идентификатор интерфейса из MAC-адреса, чтобы адрес был предсказуемым. Это аналоги netsh interface ipv6 set privacy state=disabled и set global randomizeidentifiers=disabled.
DnsClient — клиентская часть DNS:
Get-DnsClientServerAddress # кто прописан на каждом интерфейсе
Set-DnsClientServerAddress Ethernet -ServerAddresses 192.168.1.10, 192.168.1.11
Get-DnsClient # суффиксы, регистрация в DNS по интерфейсам
Set-DnsClientGlobalSetting -SuffixSearchList corp.example.com, example.com
Resolve-DnsName dc1.corp.example.com -Type A # nslookup с объектами на выходе
Clear-DnsClientCache # ipconfig /flushdns
Register-DnsClient # ipconfig /registerdns
NetSecurity — файрвол и IPsec:
Get-NetFirewallProfile # netsh advfirewall show allprofiles
Set-NetFirewallProfile -Profile Public -DefaultInboundAction Block
New-NetFirewallRule -DisplayName 'App 8080' -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Domain
Get-NetFirewallRule -DisplayGroup 'Remote Desktop' | Enable-NetFirewallRule
Get-NetFirewallRule -Enabled True -Direction Inbound | Get-NetFirewallPortFilter | Where-Object LocalPort -eq 445
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow | Format-Table DisplayName, Profile, Program
Правило в netsh: netsh advfirewall firewall add rule name="App 8080" dir=in action=allow protocol=TCP localport=8080 profile=domain. Один в один, разница в том, что Get-NetFirewallRule возвращает объекты, а фильтры по портам, адресам и программам у них лежат отдельными объектами, за которыми ходят Get-NetFirewallPortFilter, Get-NetFirewallAddressFilter, Get-NetFirewallApplicationFilter. Это неудобно, пока не привыкнешь, и очень удобно потом: один запрос «все правила, открывающие 445 наружу» на сто серверов.
Профиль сети у интерфейса — отдельный командлет Get-NetConnectionProfile. У автономного сервера сеть часто оказывается Public, и половина правил управления в этом профиле закрыта; поменять на Private можно Set-NetConnectionProfile -InterfaceAlias Ethernet -NetworkCategory Private. Профиль Domain руками не назначается: его интерфейс получает сам, когда с него видно контроллер домена.
Что по-прежнему умеет только netsh
Перенаправление портов. netsh interface portproxy заставляет Windows слушать порт и перебрасывать соединения на другой адрес и порт, в том числе из IPv4 в IPv6 и обратно. Командлета нет и, судя по всему, не будет.
PS C:\> netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=192.168.1.20 connectport=80
PS C:\> netsh interface portproxy show all
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
0.0.0.0 8080 192.168.1.20 80
Работает за счёт службы IP Helper (iphlpsvc); если служба выключена, правила есть, а переброса нет. Правило файрвола для порта 8080 нужно добавить отдельно. Пригождается, когда нужно временно вывести наружу сервис с другой машины или пробросить порт внутрь WSL.
HTTP.sys. Веб-сервер в Windows встроен в ядро: драйвер HTTP.sys принимает соединения, а IIS, WinRM, WSUS, службы на ASP.NET Core с HttpSys-сервером — его клиенты. Сертификаты привязываются к портам на уровне HTTP.sys, и права слушать URL без прав администратора выдаются там же:
netsh http show sslcert
netsh http add sslcert ipport=0.0.0.0:8443 certhash=3f1a…c9e2 appid='{12345678-0000-0000-0000-000000000001}'
netsh http add urlacl url=http://+:8080/ user='CORP\svc-app'
netsh http show urlacl
Для сайтов IIS это делает модуль WebAdministration, но служба не в IIS (а WinRM через HTTPS, который мы будем настраивать в части про Remoting, — ровно такой случай) настраивается только здесь.
Прокси для служб. В Windows два набора настроек прокси: WinINET — пользовательский, тот, что в настройках браузера, и WinHTTP — системный, которым пользуются Windows Update, WinRM, клиент WSUS, Defender, службы под учётными записями без профиля. Второй задаётся только netsh:
netsh winhttp show proxy
netsh winhttp set proxy proxy-server="proxy.corp.example.com:3128" bypass-list="*.corp.example.com;<local>"
netsh winhttp reset proxy
Сервер, который «не видит Windows Update» в сети с обязательным прокси, лечится этой командой или импортом пользовательских настроек: netsh winhttp import proxy source=ie.
Сброс стека. netsh winsock reset пересобирает каталог Winsock, в который встраиваются антивирусы, VPN-клиенты и прочие провайдеры многоуровневых служб; netsh interface ipv4 reset и ipv6 reset возвращают настройки протокола к заводским. Обе команды — последнее средство при «сеть есть, а ничего не работает» после удаления криво написанного агента, и обе требуют перезагрузки. Вторая, кроме того, стирает статические адреса на всех интерфейсах, так что на удалённом сервере её выполняют только с консоли гипервизора.
Экспорт и импорт файрвола. netsh advfirewall export C:\fw.wfw сохраняет всю политику файрвола, включая правила IPsec, в бинарный файл, а import восстанавливает. У NetSecurity есть Copy-NetFirewallRule между хранилищами и объекты GPO, но файла целиком в один шаг он не даёт.
Захват трафика. tcpdump под Windows существует только в виде сторонних портов — WinDump поверх драйвера Npcap и коммерческий tcpdump for Windows, — и для них на сервер нужно ставить драйвер захвата. Встроенных способов снять пакеты без установки чего-либо два.
Первый — netsh trace, с Windows 7. Пишет ETL-файл с пакетами и событиями сетевых компонентов:
netsh trace start capture=yes tracefile=C:\Temp\dns.etl maxsize=200 persistent=no
Resolve-DnsName www.example.com
netsh trace stop
ETL открывается Microsoft Network Monitor или Message Analyzer либо конвертируется в pcapng утилитой etl2pcapng с GitHub Microsoft и открывается в Wireshark. Параметр persistent=yes продолжит захват после перезагрузки, что незаменимо для проблем «при старте системы».
Второй — pktmon, с Windows Server 2019 и Windows 10 1809, и он удобнее: умеет фильтры и сам конвертирует в pcapng.
PS C:\> pktmon filter add -p 53
PS C:\> pktmon start --capture --pkt-size 0
Logger Parameters:
Logger name: PktMon
Logging mode: Circular
Log file: C:\Temp\PktMon.etl
Max file size: 512 MB
Memory buffers: 64 MB
Collected Data:
Packet counters, packet capture
Capture Type:
All packets
PS C:\> Resolve-DnsName www.example.com | Out-Null
PS C:\> pktmon stop
Flushing logs...
Merging metadata...
Log file: C:\Temp\PktMon.etl (No events lost)
PS C:\> pktmon etl2pcap C:\Temp\PktMon.etl --out C:\Temp\dns.pcapng
Processing...
Packets total: 4
Packet drop count: 0
Packets formatted: 4
Formatted file: C:\Temp\dns.pcapng
pktmon filter add -p 53 — только порт 53, --pkt-size 0 — пакеты целиком, не первые 128 байт. Можно и в реальном времени: pktmon start --capture --log-mode real-time печатает пакеты в консоль, как tcpdump без флага -w. Полученный pcapng открывается в Wireshark на рабочей станции, и дальше всё как в сетевой серии. В частях про Kerberos и репликацию мы будем снимать обмены именно так.
Смотрим руками
Кто слушает порты на сервере — вопрос, который возникает каждый раз, когда «порт занят» или «служба не отвечает». netstat -ano показывает PID, Get-NetTCPConnection — объекты, к которым можно приклеить имя процесса:
PS C:\> Get-NetTCPConnection -State Listen |
Select-Object LocalAddress, LocalPort, OwningProcess, @{n='Process'; e={(Get-Process -Id $_.OwningProcess).ProcessName}} |
Sort-Object LocalPort -Unique | Format-Table -AutoSize
LocalAddress LocalPort OwningProcess Process
------------ --------- ------------- -------
0.0.0.0 135 916 svchost
0.0.0.0 445 4 System
0.0.0.0 3389 1204 svchost
0.0.0.0 5985 4 System
:: 47001 4 System
0.0.0.0 49664 728 lsass
0.0.0.0 49665 1000 svchost
Четыре порта, которые есть на любом сервере: 135 — RPC Endpoint Mapper, через который находят друг друга службы на RPC (им мы займёмся в части про устройство AD); 445 — SMB; 5985 и 47001 — WinRM (второй — внутренний слушатель для локальных подписок); 3389 — RDP, который мы включили в прошлой части. Процесс System с PID 4 на 445 и 5985 — это драйверы ядра srv2.sys и HTTP.sys, а не процессы пользователя. lsass на 49664 — локальная система безопасности, слушающая на динамическом порту RPC; когда сервер станет контроллером, у него появятся ещё 88 (Kerberos), 389 и 636 (LDAP), 3268 и 3269 (глобальный каталог), 53 (DNS), 464 (смена пароля Kerberos) и 9389 (веб-службы AD).
Таблица маршрутов:
PS C:\> Get-NetRoute -AddressFamily IPv4 | Where-Object NextHop -ne '0.0.0.0' | Format-Table DestinationPrefix, NextHop, InterfaceAlias, RouteMetric, ifMetric
DestinationPrefix NextHop InterfaceAlias RouteMetric ifMetric
----------------- ------- -------------- ----------- --------
0.0.0.0/0 192.168.1.1 Ethernet 0 15
Маршруты с NextHop 0.0.0.0 — локальные подсети и адреса самого хоста, их много и они неинтересны. Маршрут по умолчанию один, метрика маршрута плюс метрика интерфейса даёт итоговую стоимость; когда интерфейсов несколько и трафик идёт «не туда», сравнивают именно эти суммы. Если нужен старый вид, route print на месте.
И диск целиком, как его видит система, от физического устройства до тома:
PS C:\> Get-PhysicalDisk | Format-Table DeviceId, FriendlyName, MediaType, BusType, Size, HealthStatus
PS C:\> Get-Disk 0 | Get-Partition | Format-Table PartitionNumber, Type, GptType, Size, DriveLetter, IsBoot, IsSystem
PartitionNumber Type GptType Size DriveLetter IsBoot IsSystem
--------------- ---- ------- ---- ----------- ------ --------
1 System {c12a7328-f81f-11d2-ba4b-00a0c93ec93b} 100 MB False True
2 Reserved {e3c9e316-0b5c-4db8-817d-f92df00215ae} 16 MB False False
3 Basic {ebd0a0a2-0b84-4a0b-9d6b-3b2b5b4b6a5a} 39 GB C True False
4 Recovery {de94bba4-06d1-4d40-a16a-bfd50179d6ac} 799 MB False False
Те четыре раздела, о которых шла речь в начале. IsSystem — раздел с загрузчиком, IsBoot — раздел с Windows; в терминологии Microsoft они названы ровно наоборот тому, что ожидаешь, и это стоит запомнить один раз.
У нас есть сервер, и мы умеем читать его диски и сеть на любом уровне. Пора заняться тем, ради чего всё затевалось. Но прежде чем выполнить Install-ADDSForest, стоит понять, что именно эта команда создаст: лес, домен, разделы каталога, глобальный каталог, SYSVOL и пять протоколов, на которых всё это держится.
Дальше — часть 3: как устроен Active Directory. Лес, дерево, домен и OU; что такое разделы каталога и зачем их четыре; глобальный каталог; SYSVOL; и обзор протоколов LDAP, Kerberos, NTLM, SMB и RPC — что каждый из них делает в домене и когда вступает в игру.
Серия «Windows Server для самых маленьких»
- Windows Server с нуля — редакции, Server Core, установка, первые команды PowerShell, имя, сеть, время, обновления, роли.
- Диски и сеть: diskpart, netsh и их PowerShell-замены (эта статья) — разметка дисков и сетевой стек через старые утилиты и модули Storage, NetTCPIP, NetSecurity, и что умеют только утилиты.
Оставить комментарий могут только зарегистрированные пользователи.
Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.