Windows server без графического интерфейса настройка

Время на прочтение8 мин

Количество просмотров24K

Windows Server 2012 позиционируется как система, которой GUI для полноценной работы не нужен. При установке по умолчанию выбран пункт Server Core, добавлена возможность удаления графического интерфейса без переустановки сервера, список ролей, не нуждающихся в GUI в сравнении с 2008 R2 расширен. В своих книгах Microsoft утверждает, что работа с командной строкой естественна и вспоминает начало 90-х годов прошлого века, когда системные администраторы жаловались на бесполезную трату ресурсов графической оболочкой. В дополнение к этому Microsoft предлагает «новый» путь администрирования своих серверных операционных систем, в котором предполагается, что серверную консоль вы будете видеть только один раз – при установке операционной системы, а вся работа и настройка системы будет осуществляться удаленно: через «Диспетчер серверов», MMC-оснастки и PowerShell, который в 2012 сервере уже версии 3.0

Допустим, что первоначальная настройка сервера после установки включает в себя:

  • Настройку сетевых интерфейсов
  • Установку часового пояса
  • Включение удаленного рабочего стола
  • Переименование компьютера
  • Присоединение к домену

Вопрос в следующем: а можно ли эти задачи выполнить удаленно средствами PowerShell? Ну вот, допустим, есть удаленный сервер где-нибудь в тайге, на который местный умелец поставил 2012 сервер, пошел отметить это дело и потерял ключ от шкафа. Шкаф бронебойный, водо-, звуконепроницаемый и вообще предполагает защиту от несанкционированного доступа медведей. А настроить надо. Допустим, есть VPN или какой-нибудь «прямой провод» (очень часто вижу эту услугу в прайсах провайдеров) и сервер доступен по сети. И только по сети.

В исходных данных письмо от местного умельца:

Привет, поставил венду на сервер. IP – 169.254.23.43. Логин – Администратор. Пароль – qwe123!@#. Пока.

Готовимся

Удаленный сервер в рабочей группе, в свежеустановленном состоянии, RPC не понимает (порты на брандмауэре закрыты), не пингуется, с непроизносимым именем и московским часовым поясом в Сибири. Если бы это был 2008 R2 на этом бы наши приключения и закончились, так как все средства удаленного управления в нем по умолчанию отключены. В 2012 есть способ удаленно управлять из коробки – включенный по умолчанию WinRM, реализация стандарта WS-MAN от Microsoft. С одной стороны вроде дыра в безопасности, с другой – в нормально спроектированной сети, в которой сервера находятся в отдельном VLAN, доступ к которому ограничен для доверенных пользователей, вероятность использования этой дыры незначительна. Но все-таки есть.

Для управления удаленным сервером в рабочей группе с помощью WinRM, мы должны доверять удаленному серверу. Тут мне логика немного непонятна. По идее, удаленный сервер должен доверять нам, мы же им управляем, а не он нами. Возможно, это от неполного понимания принципов работы WS-MAN. Но в любом случае, сказать WinRM, что мы доверяем удаленному серверу нужно. Это реализовано занесением имени или IP-адреса удаленного сервера в список «доверенных хостов» (TrustedHosts)

si WSMan:\localhost\Client\TrustedHosts 169.254.23.43

Теперь как-то нужно выполнить первоначальную настройку удаленного сервера. Я знаю 2 командлета, которые могут помочь с этой задачей: Enter-Pssession и Invoke-Command. Оба используют WinRM. Enter-Pssession дает нам консоль удаленного сервера, Invoke-Command отправляет блок команд на удаленный сервер и возвращает результат их выполнения. Ниже используется Invoke-Command (мы же собрались вообще не видеть удаленную консоль).

Действия будем выполнять по следующему принципу:

  1. PowerShell
  2. Если не получается выполнить задачу через PowerShell, подключаем cmd
  3. Если не в PowerShell, не в cmd нет подходящих инструментов – WMI через PowerShell
  4. Ну и как последний вариант – ковыряние реестра также через PowerShell

Настройка сетевых интерфейсов

Делать нечего, меняем свой адрес на что-нибудь из APIPA-диапазона, ну например 169.254.0.1 и садимся думать, как удаленно изменить IP-адрес у таёжного сервера. Думать тут нечего:

  1. Определить на каком адаптере производить изменения
  2. Отключить DHCP
  3. Назначить статический адрес для сервера с маской подсети и шлюзом по умолчанию.
  4. Hазначить DNS-серверы

И все это желательно не отцепляясь от сервера.

В PowerShell 3.0 появилась целая группа Network Adapter Cmdlets, которая позволяет нам делать с сетевыми адаптерами все что угодно.

Получаем объект сетевого адаптера и сохраняем его в переменной $adapter. Ethernet – это новое имя для «Подключение по локальной сети». Это изменение, несмотря на кажущуюся незначительность, очень радует.

$adapter = Get-NetAdapter Ethernet

Отключаем DHCP

$adapter | Set-NetAdapter –Dhcp disabled

Меняем IP-адрес на нормальный с необходимой маской и шлюзом. Для этого существует другая группа Net TCP/IP Cmdlets

$adapter | New-NetIPAddress 192.168.0.5 –PrefixLength 24 –DefaultGateway 192.168.0.1

Добавляем DNS-серверы. Третья группа DNS Client Cmdlets

Set-DnsClientServerAddress Ethernet –addresses (“192.168.0.2”,”192.168.0.3”)

Как все это выполнить на удаленном сервере? Сделать скрипт и с помощью Invoke-Command запустить его на выполнение.

Сохраним этот набор команд где-нибудь с именем скрипта, например, remotechangeip.

Тут есть один момент. Называется политика выполнения скриптов.

По умолчанию в PowerShell разрешается работа только в интерактивном режиме, выполнение любых скриптов запрещено (restricted). Для выполнения скриптов нам нужно либо remotesigned (цифровая подпись требуется для скриптов, загруженных из интернета), либо unrestricted (при выполнении неподписанного скрипта, загруженного из интернета будет выдаваться предупреждение о ненадежности источника). Если на безопасность совсем положить, можно поставить bypass (будет выполняться все без лишних вопросов). Eсли у вас есть собственный сертификат, выданный доверенным издателем, и вы не ленитесь подписывать с его помощью свои скрипты – вам нужен allsigned (в таком случае, вы наверное и сами это знаете). У меня сертификата нет, поэтому политику я устанавливаю remotesigned.

Set-ExecutionPolicy remotesigned

Политика выполнения скриптов устанавливается на локальном компьютере, на удаленном такой необходимости нет, потому что Invoke-Command перед выполнением скрипта на удаленном компьютере преобразовывает файл скрипта в просто набор команд. Соответственно, на удаленном компьютере выполняется не скрипт (файл с расширением .ps1), а набор команд, которым политика выполнения скриптов по барабану.

Отправляем наш скрипт на удаленный сервер.

Invoke-Command 169.254.23.43 C:\scripts\remotechangeip.ps1 –Credential Администратор

Пароль от учетной записи Администратор у нас есть в письме. После выполнения получаем сервер со статическим адресом 192.168.0.5 с маской подсети /24, шлюзом по умолчанию 192.168.0.1 и DNS-серверами 192.168.0.2 и 192.168.0.3

Еще нужно не забыть изменить IP в TrustedHosts, иначе на этом наше удаленное администрирование закончится.

$newvalue = ((ls WSMan:\localhost\Client\TrustedHosts).value).replace("169.254.23.43","192.168.0.5")
si WSMan:\localhost\Client\TrustedHosts $newvalue

Изменение часового пояса

Я очень долго пытался решить эту задачу с помощью PowerShell. Я нашел функцию, меняющую часовой пояс локально. Но если мы попытаемся выполнить эту функцию через Invoke-Command, получим граблями по лбу в виде «Имя Set-Timezone не распознано как имя командлета, функции, файла сценария или выполняемой программы».

Invoke-Command при выполнении естественно не копирует с локальной машины, а выполняет имеющиеся на удаленном сервере командлеты. Это понятно и логично. Задача была ясна — перед выполнением Invoke-Command нужно сбросить функцию на удаленный сервер. Но… тут мне стало лень.

Если заглянуть в код функции, то становится понятно, что она всего лишь проверяет версию ОС и в зависимости от нее выполняет либо timedate.cpl (XP и ниже), либо tzutil (Vista и выше). Проверять версию ОС незачем, мы ее знаем. Поэтому просто изменим часовой пояс с помощью tzutil

Invoke-Command 192.168.0.5 {tzutil /s “North Asia Standard Time”} –Credential Администратор

WMI

Можно попробовать установить часовой пояс, используя WMI. Выглядеть это будет так:

$strComputer = "."
$objWMI = gwmi win32_computersystem" -computername $strComputer
$objWMI.CurrentTimeZone = 207
$objWMI.Put()

Что здесь происходит? Точка (.) говорит, что мы работаем с локальным компьютером. Обращаемся на локальном компьютере к классу win32_computersystem. Присваиваем свойству CurrentTimeZone значение 207, соответствующее “North Asia Standard Time”. И методом Put сохраняем изменение часового пояса.

Также сохранить и передать скрипт на удаленный компьютер с помощью Invoke-Command. По-моему, использовать tzutil проще.

Значения часовых поясов можно взять отсюда или из вывода tzutil /l
Ну и без PowerShell все-таки не обошлось.

Включение удаленного рабочего стола

В PowerShell 3.0 появилось множество командлетов, для работы с RDS. Их группа так и называется Remote Desktop Cmdlets. Но, как я понял, они рассчитаны на работу с RDS-сервером, просто включить удаленный рабочий стол для администратора с их помощью нельзя.

Остается два способа включения рабочего стола. Через WMI-вызовы и

неправильный

через модификацию реестра. Модификация реестра мне никогда не нравилась. Одно неловкое движение пальца и никто не гарантирует, что сервер поднимется после перезагрузки.

Что касается включения удаленного рабочего стола, то модификация ключа HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections, которому нужно присвоить значение 0, чтобы разрешить удаленный рабочий стол:

во-первых, требует перезагрузки, во-вторых

, не добавляет исключение для удаленного рабочего стола в правила брандмауэра.

Поэтому я буду использовать WMI-класс win32_terminalservicesetting и его метод setallowtsconnections, что позволит обойтись без перезагрузки и добавить правила исключения в брандмауэре одной командой.

Invoke-Command 192.168.0.5 {(gwmi win32_terminalservicesetting -namespace root\cimv2\terminalservices).setallowtsconnections(1,1)} –Credential Администратор

Теперь у нас есть доступ к таёжному серверу по RDP! Можно радоваться? Представим, что единственный канал связи с внешним миром у удаленного сервера через спутник с грабительскими тарифами, диалапной скоростью, зашкаливающим пингом и продолжим настраивать сервер удаленно через PowerShell.

Переименование сервера и присоединение его к домену

Тем более, что осталось совсем немного.

По идее, командлет Add-Computer позволяет переименовать компьютер при присоединении его к домену. Но на практике, я сталкивался с тем, что при присоединении к домену и одновременным переименованием с помощью этой команды, компьютер входит в домен под своим старым именем. И понеслась – вывести компьютер из домена, перезагрузиться, удалить учетку в AD, запустить репликацию если контроллеров несколько, подождать, переименовать компьютер, перезагрузиться, ввести в домен, перезагрузиться.

Поэтому я предпочитаю операции переименования компьютера и ввода в домен выполнять отдельно.

Переименование

Invoke-Command 192.168.0.5 {rename-computer taiga -restart} -credential Администратор

Как только нам вернули управление, значит удаленный сервер перезагружается. Проверить результат команды (и готовность сервера) можно так:

Invoke-Command 192.168.0.5 {$env:computername} -credential Администратор

И наконец-то ввод в домен

Invoke-Сommand 192.168.0.5 {add-computer contoso.com -credential contoso.com\domainadmin -restart} -credential Администратор

Заканчиваем

Все поставленные в начале задачи выполнены. Теперь уже можно думать, как дальше жить и где искать этот чертов ключ от шкафа.

И напоследок небольшая шпаргалка по CMD и PowerShell.

CMD PowerShell
Изменить сетевые настройки
netsh interface ip set address name = “Ethernet” static 192.168.0.5 255.255.255.0 192.168.0.1 1
netsh interface ip set dns name = “Ethernet” static 192.168.0.2
netsh interface ip add dns name = “Ethernet” static 192.168.0.3
$adapter = Get-NetAdapter Ethernet
$adapter | Set-NetAdapter –Dhcp disabled
$adapter | New-NetIPAddress 192.168.0.5 –PrefixLength 24 –DefaultGateway 192.168.0.1
Set-DnsClientServerAddress Ethernet –addresses (“192.168.0.2”,”192.168.0.3”)
Изменить часовой пояс
tzutil /s “North Asia Standard Time”
$strComputer = "."
$objWMI = gwmi win32_computersystem" -computername $strComputer
$objWMI.CurrentTimeZone = 207
$objWMI.Put()
Включить удаленный рабочий стол
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
(gwmi win32_terminalservicesetting -namespace root\cimv2\terminalservices).setallowtsconnections(1,1)
Переименовать сервер
netdom renamecomputer %computername% /newname:taiga /reboot
rename-computer taiga –restart
Присоединить к домену
netdom join taiga /d:contoso.com /ud:contoso.com\domainadmin /pd:* /reboot
add-computer contoso.com -credential contoso.com\domainadmin -restart

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

А Enter-Pssession у меня не заработал :)

Использован материал из:
MSDN
Technet

В этой статье я постарался собрать в одном месте основные команды cmd и PowerShell, которые полезны при настройке и управлении Windows Server Core. Думаю, этот гайд будет полезен как новичкам, так и опытным системным администраторам, как справочник по базовым командам Server Core.

Содержание:

  • Настройка Windows Server Core с помощью SCONFIG
  • Основные команды PowerShell для настройки Server Core
  • Установка обновлений в Server Core
  • Часто используемые команды в Server Core

Напомним, что Server Core это особый режим установки Windows Server без большинства графических инструментов и оболочек. Управление таким сервером выполняется из командной строки или удаленно.

Преимущества Windows Serve Core:

  • Меньшие требования к ресурсам;
  • Повышенная стабильность, безопасность, требует установки меньшего количества обновлений (за счет меньшего количества кода и используемых компонентов);
  • Идеально подходит для использования в качестве сервера для инфраструктурных ролей (контроллер домена Active Directory, DHCP сервер, Hyper-V сервер, файловый сервер и т.д.).

Server Core лицензируется как обычный физический или виртуальный экземпляр Windows Server (в отличии от Hyper-V Server, который полностью бесплатен).

Для установки Windows Server 2016/2019 в режиме Core нужно выбрать обычную установку. Если вы выберите Windows Server (Desktop Experience), будет установлен GUI версия операционной системы (в предыдущих версиях Windows Server она называлась Server with a GUI).

установка windows server core 2019

После установки Windows Server Core перед вами появляется командная строка, где нужно задать пароль локального администратора.

задать пароль администратора в server core

При входе на Server Core открывается командная строка (cmd.exe). Чтобы вместо командной строки у вас всегда открывалась консоль PowerShell.exe, нужно внести изменения в реестр. Выполните команды:

Powershell.exe
Set-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\WinLogon' -Name Shell -Value 'PowerShell.exe'

И перезагрузите сервер:

Restart-Computer -Force

запускать powershell вместо командной строки

Если вы случайно закрыли окно командной строки, нажмите сочетание клавиш Ctrl+Alt+Delete, запустите Task Manager -> File -> Run -> выполните
cmd.exe
(или
PowerShell.exe
).

Настройка Windows Server Core с помощью SCONFIG

Для базовой настройки Server Core можно использовать встроенный скрипт sconfig. Просто выполните команду sconfig в консоли. Перед вами появиться меню с несколькими пунктами:

настройка windows server core с помощью утилиты sconfig

С помощью меню Server Configuration можно настроить:

  • Добавить компьютер в домен или рабочую группу;
  • Изменить имя компьютера (hostname);
  • Добавить локального администратора;
  • Разрешить/запретить удаленное управления и ответы на icmp;
  • Настроить параметры обновления через Windows Update;
  • Установить обновления Windows;
  • Включить/отключить RDP;
  • Настроить параметры сетевых адаптеров (IP адрес, шлюз, DNS сервера);
  • Настроить дату и время;
  • Изменить параметры телеметрии;
  • Выполнить logoff, перезагрузить или выключить сервер.

Все пункт в меню
sconfig
пронумерованы. Чтобы перейти в определенное меню наберите его номер и Enter.

В некоторых пунктах меню настройки sconfig есть вложенные пункты. Там также, чтобы перейти к определенной настройке, нужно сделать выбор цифры пункта меню.

настройка базовых параметров server core из sconfig

Не будем подробно рассматривать все пункты настройки sconfig, т.к. там все достаточно просто и очевидно. Однако в большинстве случаев администраторы предпочитают использовать для настройки новых хостов с Server Core различные PowerShell скрипты. Это намного проще и быстрее, особенно при массовых развёртываниях.

Основные команды PowerShell для настройки Server Core

Рассмотрим основные команды PowerShell, которые можно использовать для настройки Server Core.

Узнать информацию о версии Windows Server и версии PowerShell:

Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
$PSVersionTable

powershell узнать версию windows server

Для перезагрузки Server Core нужно выполнить команду PowerShell :

Restart-Computer

Чтобы выполнить выход из консоли Server Core, наберите:

logoff

Настройка параметров сети

Теперь нужно из PowerShell нужно настроить параметры сети (по умолчанию Windows настроена на получение адреса от DHCP). Выведите список сетевых подключений:

Get-NetIPConfiguration

Теперь укажите индекс интерфейса сетевого адаптера (InterfaceIndex), который нужно изменить и задайте новый IP адрес:

New-NetIPaddress -InterfaceIndex 4 -IPAddress 192.168.13.100 -PrefixLength 24 -DefaultGateway 192.168.13.1
Set-DNSClientServerAddress –InterfaceIndex 4 -ServerAddresses 192.168.13.11,192.168.13.

111

задать ip адрес в windows server core с помощью powershell

Проверьте текущие настройки:

Get-NetIPConfiguration

Если нужно сбросить IP адрес и вернуться к получению адреса от DHCP, выполните:

Set-DnsClientServerAddress –InterfaceIndex 4 –ResetServerAddresses
Set-NetIPInterface –InterfaceIndex 4 -Dhcp Enabled

Включить/отключить сетевой адаптер:

Disable-NetAdapter -Name “Ethernet0”
Enable-NetAdapter -Name “Ethernet 0”

Включить, отключить, проверить статус поддержки IPv6 для сетевого адаптера:

Disable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip6
Enable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip6
Get-NetAdapterBinding -ComponentID ms_tcpip6

Настроить winhttp прокси сервер для PowerShell и системных подключений:

netsh Winhttp set proxy <servername>:<port number>

Настройка времени/даты

Вы можете настроить дату, время, часовой пояс с помощью графической утилиты
intl.cpl
или с помощью PowerShell:

Set-Date -Date "09/03/2022 09:00"
Set-TimeZone "Russia Time Zone 3

Задать имя компьютера, добавить в домен, активация

Чтобы изменить имя компьютера:

Rename-Computer -NewName win-srv01 -PassThru

Rename-Computer задать имя через powershell

Добавить сервер в домен Active Directory:

Add-Computer -DomainName "corp.winitpro.ru " -Restart

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

Add-LocalGroupMember -Group "Administrators" -Member "corp\anovikov"

Для активации Windows Server нужно указать ваш ключ:

slmgr.vbs –ipk <productkey>
slmgr.vbs –ato

Или можно активировать хост на KMS сервере (например, для Windows Server 2019):

slmgr /ipk N69G4-B89J2-4G8F4-WWYCC-J464C
slmgr /skms kms-server.winitpro.ru:1688
slmgr /ato

Разрешить удаленный доступ

Разрешить удаленный доступ к Server Core через RDP:

cscript C:\Windows\System32\Scregedit.wsf /ar 0

Разрешить удаленное управление:

Configure-SMRemoting.exe –Enable
Enable-NetFirewallRule -DisplayGroup “Windows Remote Management”

Текущие настройки:

Configure-SMRemoting.exe -Get

Разрешить Win-Rm PowerShell Remoting:

Enable-PSRemoting –force

Сервером с Windows Server можно управлять удаленно c другого сервера (с помощью ServerManager.exe), через браузер с помощью Windows Admin Center (WAC), с любой рабочей станции с помощью инструментов администрирования RSAT, подключаться к нему по RDP, PowerShell Remoting или SSH (в современных версиях Windows есть встроенный SSH сервер).

Настройка Windows Firewall

Информация о настройке Windows Firewall есть в статье по ссылке. Здесь оставлю несколько базовых команд.

Включить Windows Defender Firewall для всех профилей:

Set-NetFirewallProfile   -Profile Domain,Public,Private -Enabled True

Изменить тип сети с Public на Private:

Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private

Полностью отключить Windows Firewall (не рекомендуется):

Get-NetFirewallProfile | Set-NetFirewallProfile -enabled false

Разрешить подключение через инструменты удаленного управления:

Enable-NetFireWallRule -DisplayName “Windows Management Instrumentation (DCOM-In)”
Enable-NetFireWallRule -DisplayGroup “Remote Event Log Management”
Enable-NetFireWallRule -DisplayGroup “Remote Service Management”
Enable-NetFireWallRule -DisplayGroup “Remote Volume Management”
Enable-NetFireWallRule -DisplayGroup “Remote Scheduled Tasks Management”
Enable-NetFireWallRule -DisplayGroup “Windows Firewall Remote Management”
Enable-NetFirewallRule -DisplayGroup "Remote Administration"

Установка обновлений в Server Core

Для управления параметрами обновлений предпочтительно использовать групповые политики Windows Update, но можно задать параметры и вручную.

Отключить автоматическое обновление:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU -Name AUOptions -Value 1

Автоматически скачивать доступные обновления:
Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU -Name AUOptions -Value 3

Получить список установленных обновлений:
Get-Hotfix

Или
wmic qfe list

Для ручной установки обновлений Windows можно использовать утилиту wusa:
Wusa update_name.msu /quiet

Также для установки и управления обновлениями из командной строки удобно использовать PowerShell модуль PSWindowsUpdate.

Управление ролями, службами и процессами Windows

Для получения списка всех доступных ролей в Windows Server Core выполните команду PowerShell:

Get-WindowsFeature

список всех ролей в windows server core Get-WindowsFeature

Получить список всех установленных ролей и компонентов в Windows Server(можно быстро понять, для чего используется сервер):

Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstate

Например, для установки службы DNS воспользуйтесь такой командой:

Install-WindowsFeature DNS -IncludeManagementTools

Список всех служб в Windows:

Get-Service

Список остановленных служб:

Get-Service | Where-Object {$_.status -eq   “stopped”}

Перезапустить службу:

Restart-Service -Name spooler

Для управление процессами можно использовать стандартный диспетчер задач (taskmgr.exe) или PowerShell модуль Processes:

Get-Process cmd, proc1* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft

Часто используемые команды в Server Core

Ну и наконец, приведу список различных полезных мне команд, которые я периодически использую в Server Core.

Информация о статусе и здоровье физических дисков (используется стандартный модуль управления дисками Storage):

Get-PhysicalDisk | Sort Size | FT FriendlyName, Size, MediaType, SpindleSpeed, HealthStatus, OperationalStatus -AutoSize

Информация о свободном месте на диске:

Get-WmiObject -Class Win32_LogicalDisk |
Select-Object -Property DeviceID, VolumeName, @{Label='FreeSpace (Gb)'; expression={($_.FreeSpace/1GB).ToString('F2')}},
@{Label='Total (Gb)'; expression={($_.Size/1GB).ToString('F2')}},
@{label='FreePercent'; expression={[Math]::Round(($_.freespace / $_.size) * 100, 2)}}|ft

информация о дисках и свободном месте в windows server core

Информация о времени последних 10 перезагрузок сервера:

Get-EventLog system | where-object {$_.eventid -eq 6006} | select -last 10

Список установленных программ:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

Скачать и распаковать zip файл с внешнего сайта:

Invoke-WebRequest https://contoso/test.zip -outfile test.zip
Expand-Archive -path '.\test.zip' -DestinationPath C:\Users\Administrator\Documents\

Чтобы скопировать все файлы из каталога на удаленный компьютер по сети можно использовать Copy-Item:

$session = New-PSSession -ComputerName remotsnode1
Copy-Item -Path "C:\Logs\*" -ToSession $session -Destination "C:\Logs\" -Recurse -Force

Для установки драйвера можно использовать стандартную утилиту:

Pnputil –i –a c:\distr\hpdp.inf

Также Microsoft предлагает специальный пакет Server Core App Compatibility Feature on Demand (FOD), который позволяет установить в Windows Server 2019 некоторые графические инструменты и консоли (MMC, Eventvwr, Hyper-V Manager, PerfMon, Resmon, Explorer.exe, Device Manager, Powershell ISE). Этот FOD доступен для загрузки в виде ISO при наличии активной подписки. Установка выполняется командой:

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

Установка Server Core App Compatibility Feature on Demand будет использовать дополнительно около 200 Мб оперативной памяти в Server Core.

запуск explorer.exe в windows server core с помощью Server Core App Compatibility Feature on Demand (FOD),

В этой статье я постарался собрать самые нужные команды, которые нужно постоянно держать под рукой при работе с Windows Server Core. Время от времени я буду обновлять статью и добавлять новые команды, которые покажутся мне нужными для повседневной работы.

Кроме того, поскольку для него не требуются все компоненты версии, включающей графический интерфейс, он требует меньше ресурсов. Server Core можно установить с установочного носителя Windows Server 2019 или развернуть различными способами из файла install.wim, расположенного на установочном носителе.

Варианты установки Windows Server 2019


Server Core interface

Весь интерфейс Server Core представляет собой командную строку. Как показано на рисунке, для взаимодействия с командной строкой необходимо нажать Ctrl + Alt + Del, чтобы разблокировать ее. Затем вы можете войти в систему с учетной записью администратора домена или локального администратора (предварительно создав для него пароль).

интерфейс Server Core

Переименовать сервер, ввести в домен, настроить Windows Update, сконфигурировать подключение через RDP и выполнить другие настройки можно используя программу sconfig.exe.

sconfig.exe

После выполненных настроек можно запустить сеанс PowerShell, набрав PowerShell.exe. Хотя Server Core — это в первую очередь среда командной строки, но есть некоторые графические инструменты, которые можно запустить из командной строки или диспетчера задач. Они включают:

Диспетчер задач. Он работает так же, как и на сервере с возможностями рабочего стола или Windows 10, и его можно использовать для запуска задач, выбрав пункт «Выполнить новую задачу» в меню «Файл».

Notepad.exe. Можете запустить Блокнот для редактирования и просмотра содержимого текстовых файлов.

  • MSInfo32.exe — просмотр сведений о системе, программных и аппаратных ресурсах.
  • Regedit.exe and Regedt32.exe — редактирование реестра на Server Core.
  • TimeDate.cpl — панель управления временем и датой.
  • Intl.cpl — панель управления региональными настройками.
  • Iscsicpl.exe — панель управления «Свойства: инициатор iSCSI«, для возможности подключаться к общему хранилищу через iSCSI.

Установка компонентов совместимости приложений позволяет получить доступ к еще большему количеству инструментов графического интерфейса при входе непосредственно на «рабочий стол» Server Core.

Подсказка.

Если вы введете Exit в командной строке Server Core, командная строка закроется. Чтобы вернуть командную строку назад, не обязательно перезагружать сервер, есть более простой способ. Нажмите Ctrl-Alt-Del, выберите «Диспетчер задач», нажмите «Файл» — «Выполнить новую задачу» и введите cmd.exe. Это откроет командную строку без необходимости выхода из системы или перезагрузки компьютера.


Роли Server Core

Server Core поддерживает следующие роли, которые можно установить с помощью командлета PowerShell Add-WindowsFeature, или мастера добавления ролей и компонентов, доступного в консоли Server Manager, или с помощью Windows Admin Center с удаленного компьютера, как показано на рисунке ниже.

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

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

Microsoft рекомендует управлять всеми серверами удаленно. На самом деле не имеет значения, что Server Core не имеет графического интерфейса, потому что в этом случае не нужно входить в систему локально. Вместо этого происходит подключение с помощью инструментов удаленного администрирования.

Windows Server 2012 и Windows Server 2012 R2 позволяют переключаться между вариантами Server Core и Server with Desktop Experience (Рабочим столом). Это дает возможность развернуть Server with Desktop Experience, а затем сократить его до Server Core, если обнаружится, что компоненты рабочего стола будут больше не нужны. Если не удается запустить определенное приложение на Server Core, всегда можно установить Desktop Experience. Windows Server 2019 не предоставляет такой возможности, поэтому выбирать версию нужно еще на этапе планирования, в противном случае придется выполнять повторную установку OS.


Совместимость приложений с Server Core

Одна из проблем использования приложений в Windows Server Core в том, что многие приложения так или иначе зависят от графического интерфейса. И развернув редакцию Core можно получить неработоспособное приложение.

Функции совместимости приложений по требованию (App Compatibility Features on Demand, FOD) повышают совместимость Server Core для большого количества приложений. Также устанавливаются дополнительные диагностические инструменты для устранения неполадок и отладки операций, включая:
Консоль управления (mmc.exe), просмотр событий (Eventvwr.msc), монитор производительности (PerfMon.exe) и ресурсов (Resmon.exe), диспетчер устройств (Devmgmt.msc), управление дисками (diskmgmt.msc), управление кластером (CluAdmin.msc).

Если сервер имеет доступ к Windows Update, можно выполнить онлайн-установку FOD, выполнив следующую команду из сеанса PowerShell и перезагрузить сервер:

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

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

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

Если доступа к интернету нет, то вначале нужно заранее загрузить iso образ «Features on Demand» с веб-сайта Microsoft и установить, выполнив две команды. Первая монтирует iso образ, а вторая устанавливает компоненты.

Mount-DiskImage -ImagePath X:ISO_FolderISO_filename.iso
Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0 -Source Mounted_Server_FOD_Drive -LimitAccess

В каких случаях устанавливать Server Core

Нужно заранее определить, подойдет ли Server Core для конкретной рабочей ситуации. Он идеально подходит для ролей инфраструктурного типа, таких как контроллер домена, DNS-сервер, DHCP-сервер и файловый сервер. Server Core является менее подходящим, в приложениях, имеющих сложные зависимости. При установке такой программы нужно заранее убедиться в ее работоспособности в режиме Windows Core.

Сообщение от LENALENALENA

только нормальный гайд а не те что с хабра-они не помогли.

Сообщение от pEntity

Core не конвертируется в GUI

На хабре пример установки через FOD, который дополняет для поддержки приложений с GUI. К сожалению не всех. Т.е. можно будет запускать explorer, некоторые утилиты, но вряд ли полноценный офис, фотошоп и тем более рабочий стол привычного компа.

Поэтому, если требуется полный рабочий стол и все его прибамбасы, придется согласиться с pEntity.
Версия Core для размещения в облаке или серверах, где каждые мегабайты на диске и в оперативной памяти, это затраты на аренду сервера. Которые у всех есть желание снизить. Поэтому используется этот минимализм.
Но с другой стороны, если развернут CORE, зачем в этой системе полноценный десктоп и прочая графика. Это два противоречащих требования и понятия.
Когда-то развернул и сдал 19-й CORE. Ради спортивного интереса развернул через FODGUI. Будет некоторая сложность найти именно нужный FOD под конкретную версию Windows.
Простые проги запускаются. Была идея прокачать дальше, сдать как сервер-терминалов, где конечно используется офис или либбре. Не вышло. Точнее не стал искать и устанавливать требуемые библиотеки. Думаю это реально, но не имея подобной задачи, пропал интерес. Всё-таки этот софт и система точно не для этого.
конфиги и результаты внизу:

Кликните здесь для просмотра всего текста

PS C:\Windows\system32\WindowsPowerShell\v1 .0> Get-Host
Name : ConsoleHost
Version : 5.1.17763.592
InstanceId : 0ab904e5-96cc-450a-a1a7-41a75ee84f7b
UI : System.Management.Automation.Internal.Ho st.InternalHostUserInterface
CurrentCulture : ru-RU
CurrentUICulture : ru-RU
PrivateData : Microsoft.PowerShell.ConsoleHost+Console ColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.L ocalRunspace

PS C:\Windows\system32\WindowsPowerShell\v1 .0> GCI -Path ‘HKLM:\Software\Microsoft\NET Framework Setup\NDP’
Hive: HKEY_LOCAL_MACHINE\Software\Microsoft\NE T Framework Setup\NDP

Name Property
—- ———
CDF
v4
v4.0 (default) : deprecated

PS C:\Windows\system32\WindowsPowerShell\v1 .0> $PSVersionTable

Name Value
—- ——
PSVersion 5.1.17763.592
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
BuildVersion 10.0.17763.592
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

GCI ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP’ -recurse |Get-ItemProperty -name Version,Release -EA 0 | Where { $_.PSChildName -match ‘^(?!S)\p{L}’} | Select PSChildName, Version, Release
PSChildName Version Release
———— ——- ——-
Client 4.7.03190 461814
Full 4.7.03190 461814
Client 4.0.0.0

PS C:\Windows\system32\WindowsPowerShell\v1 .0> Get-WindowsFeature *FrameWork* |FT -Wrap
Display Name Name Install State
———— —- ————-
[ ] Функции .NET Framework 3.5 NET-Framework-Features Available
[ ] .NET Framework 3.5 (включает .NET 2.0 и 3.0) NET-Framework-Core Removed
[X] Функции .NET Framework 4.7 NET-Framework-45-Features Installed

[X] .NET Framework 4.7 NET-Framework-45-Core Installed
[ ] ASP.NET 4.7 NET-Framework-45-ASPNET Available
**********Ошибки запуска либре офис*****************
PS C:\Program Files\LibreOffice\program> soffice.exe
soffice.exe : Имя «soffice.exe» не распознано как имя командлета, функции, файла сценария или вы
полняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути
, после чего повторите попытку.
строка:1 знак:1
+ soffice.exe
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (soffice.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Suggestion [3,General]: Команда soffice.exe не найдена, однако существует в текущем расположении. По умолчанию оболочка Windows PowerShell не загружает команды из текущего расположения. Если вы уверены в надежности команды, введите «.\soffice.exe». Для получения дополнительных сведений вызовите справку с помощью команды «get-help about_Command_Precedence».
PS C:\Program Files\LibreOffice\program> sbase.exe
sbase.exe : Имя «sbase.exe» не распознано как имя командлета, функции, файла сценария или выполн
яемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, по
сле чего повторите попытку.
строка:1 знак:1
+ sbase.exe
+ ~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (sbase.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Suggestion [3,General]: Команда sbase.exe не найдена, однако существует в текущем расположении. По умолчанию оболочка Windows PowerShell не загружает команды из текущего расположения. Если вы уверены в надежности команды, введите «.\sbase.exe». Для получения дополнительных сведений вызовите справку с помощью команды «get-help about_Command_Precedence».
PS C:\Program Files\LibreOffice\program> .sbase.exe
.sbase.exe : Имя «.sbase.exe» не распознано как имя командлета, функции, файла сценария или выпо
лняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути,
после чего повторите попытку.
строка:1 знак:1
+ .sbase.exe
+ ~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (.sbase.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS C:\Program Files\LibreOffice\program>

Windows Server Core 2019 — это вариант операционной системы Windows Server 2019, разработанный для серверов с минимальной графической оболочкой. Он предоставляет базовую функциональность серверной ОС с уменьшенным объёмом графического интерфейса пользователя, что позволяет сократить требования к ресурсам, уменьшить поверхность для атак и упростить управление и обслуживание.

Windows Server Core 2019 идеально подходит для инфраструктур, где важно минимизировать использование ресурсов и повысить безопасность, особенно в средах, где серверы управляются централизованно и удаленно.

Основным средством управления сервером в Windows Server Core является командная строка. Но зачастую для системного администрирования и автоматизации используется инструмент, который предлагает значительно более широкий функционал и гибкость за счет использования .NET объектов и сложных сценариев. Это — PowerShell.

Управление через PowerShell

Для запуска данной командной оболочки введите:

powershell

Например, следующая команда возвращает все IP-адреса на всех интерфейсах виртуального сервера:

Get-NetIPAddress

А следующая команда используется в PowerShell для установки роли Active Directory Domain Services. Она добавляет необходимые компоненты и службы, чтобы сервер мог функционировать как контроллер домена в среде Active Directory:

Install-WindowsFeature -Name AD-Domain-Services

Чтобы проверить текущее состояние брандмауэра для всех профилей, используйте команду:

Get-NetFirewallProfile

В свою очередь следующая команда включает брандмауэр Windows для всех указанных профилей сети (Domain, Public, Private). Это означает, что брандмауэр будет активен и будет фильтровать входящий и исходящий трафик в зависимости от настроенных правил для каждого профиля:

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

При помощи PowerShell можно установить текущий часовой пояс в настройках системы:

Set-TimeZone "Russia Time Zone 3

Также PowerShell можно использовать для изменения имени компьютера. Например, следующая команда назначает хосту новое имя windows-server, указывает, что команда должна вернуть объект, представляющий переименованный компьютер, после чего перезагружает сервер:

Rename-Computer -NewName windows-server -PassThru -Restart

При подключении к виртуальной машине на Windows Server Core по умолчанию открывается командная строка, то есть утилита cmd. При этом операционная система предоставляет администратору возможность запускать вместо этого командную оболочку PowerShell. Чтобы это осуществить, необходимо внести некоторые изменения в системный реестр Windows.

Для установки PowerShell в качестве интерфейса по умолчанию выполните следующую команду:

Set-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\WinLogon' -Name Shell -Value 'PowerShell.exe'

Затем перезагрузите систему:

Restart-Computer -Force

Основные настройки через sconfig

sconfig — это консольный инструмент для базовой настройки сервера. Его можно запустить из командной строки командой:

sconfig

Интерфейс sconfig представляет собой меню, состоящее из некоторого количества пунктов.

Управление системой в Windows Server Core - Интерфейс sconfig

Данное меню предоставляет возможность:

  • изменить принадлежность сервера к домену или рабочей группе;
  • изменить имя хоста;
  • добавить учётную запись локального администратора;
  • сконфигурировать удалённое управление сервером;
  • настроить параметры автоматического обновления операционной системы;
  • проверить наличие и установить обновления операционной системы;
  • включить и отключить удалённый рабочий стол;
  • сконфигурировать сетевые настройки, такие как IP-адрес VPS, шлюза, DNS-сервера и т.д.;
  • настроить на сервере дату и время;
  • настроить уровень телеметрии, отправляемой в Microsoft;
  • ввести лицензионный ключ и активировать копию операционной системы;
  • выйти из текущей сессии пользователя;
  • перезагрузить виртуальный сервер;
  • выключить виртуальный сервер;
  • покинуть интерфейс sconfig при помощи последнего пункта меню.

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

Данный функционал помогает быстро и эффективно настраивать и управлять сервером в режиме Core без необходимости использования графического интерфейса.

В целом, работа в Windows Server Core может требовать некоторых навыков командной строки и PowerShell. При этом данный режим значительно повышает безопасность и производительность системы за счёт минимизации используемых компонентов.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 область навигации настройка
  • Как сменить имя user на windows 10
  • Goodix fingerprint device драйвер honor windows 11
  • Как зайти в биос на windows server 2019
  • Где найти сетевое окружение в windows 10