- Базовые команды для настройки и управления Windows Server Core
- Настройка Windows Server Core с помощью SCONFIG
- Основные команды PowerShell для настройки Server Core
- Настройка параметров сети
- Настройка времени/даты
- Задать имя компьютера, добавить в домен, активация
- Разрешить удаленный доступ
- Настройка Windows Firewall
- Установка обновлений в Server Core
- Управление ролями, службами и процессами Windows
- Часто используемые команды в Server Core
- Как скриптом создавать профиль пользователя в Windows 2012R2?
- Выполнение сценариев с обратной связью с помощью System Center 2012 Configuration Manager
Базовые команды для настройки и управления Windows Server Core
В этой статье я постарался собрать в одном месте основные команды cmd и PowerShell, которые полезны при настройке и управлении Windows Server Core. Думаю, этот гайд будет полезен как новичкам, так и опытным системным администраторам, как справочник по базовым командам Server Core.
Преимущества 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 перед вами появляется командная строка, где нужно задать пароль локального администратора.
При входе на Server Core открывается командная строка (cmd.exe). Чтобы вместо командной строки у вас всегда открывалась консоль PowerShell.exe, нужно внести изменения в реестр. Выполните команды:
Powershell.exe
Set-ItemProperty -Path ‘HKLM:\Software\Microsoft\Windows NT\CurrentVersion\WinLogon’ -Name Shell -Value ‘PowerShell.exe’
И перезагрузите сервер:
Настройка Windows Server Core с помощью SCONFIG
Для базовой настройки Server Core можно использовать встроенный скрипт sconfig. Просто выполните команду sconfig в консоли. Перед вами появиться меню с несколькими пунктами:
С помощью меню Server Configuration можно настроить:
- Добавить компьютер в домен или рабочую группу;
- Изменить имя компьютера (hostname);
- Добавить локального администратора;
- Разрешить/запретить удаленное управления и ответы на icmp;
- Настроить параметры обновления через Windows Update;
- Установить обновления Windows;
- Включить/отключить RDP;
- Настроить параметры сетевых адаптеров (IP адрес, шлюз, DNS сервера);
- Настроить дату и время;
- Изменить параметры телеметрии;
- Выполнить logoff, перезагрузить или выключить сервер.
Все пункт в меню sconfig пронумерованы. Чтобы перейти в определенное меню наберите его номер и Enter.
В некоторых пунктах меню настройки sconfig есть вложенные пункты. Там также, чтобы перейти к определенной настройке, нужно сделать выбор цифры пункта меню.
Не будем подробно рассматривать все пункты настройки sconfig, т.к. там все достаточно просто и очевидно. Однако в большинстве случаев администраторы предпочитают использовать для настройки новых хостов с Server Core различные PowerShell скрипты. Это намного проще и быстрее, особенно при массовых развёртываниях.
Основные команды PowerShell для настройки Server Core
Рассмотрим основные команды PowerShell, которые можно использовать для настройки Server Core.
Узнать информацию о версии Windows Server и версии PowerShell:
Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
$PSVersionTable
Для перезагрузки Server Core нужно выполнить команду PowerShell :
Чтобы выполнить выход из консоли Server Core, наберите:
Настройка параметров сети
Теперь нужно из PowerShell нужно настроить параметры сети (по умолчанию Windows настроена на получение адреса от DHCP). Выведите список сетевых подключений:
Теперь укажите индекс интерфейса сетевого адаптера (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
Проверьте текущие настройки:
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
netsh Winhttp set proxy :
Настройка времени/даты
Вы можете настроить дату, время, часовой пояс с помощью графической утилиты intl.cpl или с помощью PowerShell:
Set-Date -Date «09/03/2022 09:00»
Set-TimeZone «Russia Time Zone 3
Задать имя компьютера, добавить в домен, активация
Чтобы изменить имя компьютера:
Rename-Computer -NewName win-srv01 -PassThru
Добавить сервер в домен Active Directory:
Add-Computer -DomainName «corp.winitpro.ru » -Restart
Если нужно добавить дополнительных пользователей в администраторы, можно настроить групповую политику или добавить вручную:
Add-LocalGroupMember -Group «Administrators» -Member «corp\anovikov»
Для активации Windows Server нужно указать ваш ключ:
Или можно активировать хост на 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”
Настройка 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:
Получить список всех установленных ролей и компонентов в Windows Server(можно быстро понять, для чего используется сервер):
Get-WindowsFeature | Where-Object <$_. installstate -eq "installed">| ft Name,Installstate
Например, для установки службы DNS воспользуйтесь такой командой:
Install-WindowsFeature DNS -IncludeManagementTools
Список всех служб в Windows:
Список остановленных служб:
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
Информация о времени последних 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
Установка Server Core App Compatibility Feature on Demand будет использовать дополнительно около 200 Мб оперативной памяти в Server Core.
В этой статье я постарался собрать самые нужные команды, которые нужно постоянно держать под рукой при работе с Windows Server Core. Время от времени я буду обновлять статью и добавлять новые команды, которые покажутся мне нужными для повседневной работы.
Как скриптом создавать профиль пользователя в Windows 2012R2?
Профиль пользователя создается только при входе пользователя на компьютер (папка в Users, ветка реестра в ProfileList).
На ум приходит только ручное создание папки и ветки реестра (писал бы на повершелле хотя и используется cmd), что-то типа такого:
Скрипт длиннее конечно будет, по хорошему права надо удалять все и добавлять для SYSTEM, Computer\Administrators и вашего пользователя.
ну и дальше через reg add добавлять нужные ключи реестра.
Я бы не доверялся такому типу создания профиля и сначала 100 раз проверил всё в виртуальной машине с тестовым пользователем.
Выполнение сценариев с обратной связью с помощью System Center 2012 Configuration Manager
В предыдущей заметке был рассмотрен принцип простого выполнения сценариев, но что, если выполняемый скрипт должен возвращать некие значения, которые для нас важны? Попробуем немного усложнить задачу с выполнением скриптов через клиентов System Center 2012 Configuration Manager (SCCM).
Для примера будем использовать тот же скрипт для изменения RDP файлов, внеся в него некоторые изменения. В этом скрипте отличаются только выходные данные скрипта, которые будет ловить SCCM.
На этот раз мы не будет использовать какие-либо сетевые расположения для хранения скрипта, всё будет хранится непосредственно в SCCM.
Открываем консоль SCCM и переходим на панель Активы и соответствие (Assets and Compliance) в раздел параметров соответствия (Compliance Settings) и вызовем создание нового элемента конфигурации (Configuration Items). Присвоим имя элементу конфигурации, тип элемента оставим по умолчанию, потому как исполнятся он должен на ОС Windows.
На следующем шаге укажем мастеру операционные системы к которым будет применяться элемент конфигурации.
Далее переходим к шагу “параметры”, где нужно нажать кнопку создать, откроется новое окно в котором необходимо настроить создаваемый параметр. Присвоим имя параметру и выберем тип “Сценарий”, т.к. сценарий нам будет возвращать строковые данные выберем тип “Строка”. Эта задача так же исполнятся от имени вошедшего пользователя, поэтому нужно установить соответствующую галку.
Пришло время добавить наш сценарий в параметр, жмём на “Добавить сценарий”, перед нами вновь появляется новое окно, куда мы просто копируем скрипт.
Язык сценария по умолчанию PowerShell, но так же доступны JScript и VBScript.
Как видно из скриншота, разработчики SCCM предлагают разделение скриптов, один — для обнаружения, второй — для исправления, но мы решили не мудрить и выполнить его в обнаружении. Возможно в каких-то других и более серьёзных задачах разделение скрипта будет полезным.
После того как скрипт добавлен, появляется возможность перейти на вкладку “Правила соответствия”. Присвоим правилу соответствия имя, выберем тип “Значение” и укажем параметр соответствия.
В правиле укажем следующий смысл – компьютер соответствует требованиям, если возвращаемая строка скриптом равна “ There was no change ”.
Степень важности несоответствия установим как “сведения”, потому как в нашем случае несоответствие не является ошибкой.
После проделанных действий параметр будет добавлен.
На следующем шаге, мы увидим уже добавленный ранее параметр соответствия, его можно добавлять и здесь, но мне удобнее с предыдущего мастера.
Осталось нажать несколько раз далее, чтобы завершить работу мастера создания элемента конфигурации.
Для развёртывания этого элемента нам потребуется создать шаблон базовой конфигурации (Configurations Baselines). В Мастере создания необходимо только присвоить имя и выбрать необходимый элемент конфигурации.
Вызовем контекстное меню на созданном шаблоне
Выберем пункт “Развернуть”, откроется мастер развёртывания шаблонов базовой конфигурации.
В настройках выберем коллекцию, на которую хотим выполнить развёртывание и укажем периоды выполнения. Для примера, я буду выполнять скрипт каждые 30 минут.
После получения SCCM клиентом развёртывания, возможно вы обнаружите, что состояние соответствия после выполнения имеет статус ошибки.
Такую же ошибку можно увидеть и на клиенте SCCM перейдя в вкладку “Конфигурации”.
Можно вызвать отчёт и посмотреть более детально.
Для того чтобы избежать этой ошибки, необходимо на клиентских компьютерах разрешить выполнение PS-скриптов. Сделать это можно, например, через Групповые политики.
Параметр в редакторе групповых можно найти по расположению: Конфигурация компьютера –> Политики –> Административные шаблоны –> Компоненты Windows –> Windows PowerShell –> Включить выполнение сценариев.
Необходимо установить политику “Разрешать локальные сценарии и удалённые подписанные сценарии”.
Дождёмся автоматического выполнения сценария, либо выберем шаблон на клиенте SCCM и нажмём кнопку “Оценить”.
Увидим новый статус “ Не соответствует ”, посмотрим отчёт:
Сортировка в отчёте клиента отображает значения почему-то не по порядку, но в отчётах запускаемых с консоли такой проблемы нет:
В любом из представленных отчётов можно увидеть, какие значения и файлы были заменены.
Если выполнить оценку ещё раз, то статус отображаемый на клиенте изменится на “ Соответствует ”, потому как скрипт возвратит строку соответствия – “ There was no change ”.
В отчёте на клиенте:
На мой взгляд, выполнять разворачивать скрипты PS/JS/VBS на рабочие станции пользователей более удобно используя шаблоны базовой конфигурации, так как у нас появляется возможность отслеживать статус выполняемых действий.