Управление активацией в Windows: PowerShell модуль OSLicense (замена slmgr.vbs)

В Windows 11 недавно был добавлен новый PowerShell модуль OSLicense, который позволяет управлять ключами, лицензиями и собственно активацией в операционной системе. Данный модуль предназначен для замены устаревшего скрипта slmgr.vbs, который уже несколько десяток лет был основным инструментом администраторов для управления активацией на устройствах с Windows. С учетом того, что Microsoft планирует полностью отказаться от поддержки и удалит компоненты скриптового языка VBScript в следующих билдах Windows в ближайшие пару лет, администраторам нужно постепенно переходить на этот PowerShell модуль.

В этой статье мы рассмотрим основные PowerShell командлеты для управления ключами, лицензией и активацией в Windows вместе с эквивалентными опциями устаревшей команды slmgr.vbs , которые они предназначены заменить.

PowerShell модуль OSLicense в Windows

Проверить, установлен ли модуль OSLicense на машине:

Get-Module -ListAvailable -Name "OSLicense"

Модуль должен был автоматически установиться на всех поддерживаемых версиях Windows 11 вместе с обновлениями, вышедшими в сентябре 2026 года (на хосты с Windows Server модуль пока не доставили).

Модуль разработан под PowerShell 5.1, но, если вы вручную импортируете его в более новый PowerShell Core 7.x ( pwsh.exe ), он будет корректно работать и в этой среде.

Вывести список доступных командлетов в модуле (на данный момент доступно 11 командлетов):

Get-Command -Module OSLicense

PowerShell модуль OSLicense для управления активацией и ключами Windows

Вывести информацию о статусе активации Windows:
Get-OSLicenseInfo

Командлет выводит довольно много разной информации об активации. Но в том-то и удобство PowerShell, что на выходе он возвращает объекты, а не текст, поэтому вы можете гибко отфильтровать, какие данные (атрибуты, поля) вы хотите увидеть в результатах команды (в отличии от результатов slmgr, текстовый вывод которого нужно было дополнительно распарсивать скриптами).

Например, выведем только версию, редакцию и билд Windows, статус лицензии, и тип активации:

Get-OSLicenseInfo| Select Name,Version,LicenseStatus,Description

Get-OSLicenseInfo - статус активации и лицензии Windows на устройстве

Видим, что это машина Windows 11 Pro, активированная на KMS сервере (VOLUME_KMSCLIENT channel).

Вывести информацию об используемом KMS сервере (если используется) и текущий настройках KMS активации на машине:

Get-KmsLicenseInfo

Get-KmsLicenseInfo

Типовая последовательность команд, которую нужно выполнить для ручной активации клиента Windows на KMS сервере:

Установка публичного KMS-ключа (GVLK) для нужной редакции Windows

Invoke-OSLicense -InstallProductKey "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"

Указываем адрес и порт нашего KMS-сервера:

Set-KmsLicenseInfo -ServerName mykms.winitpro.local -Port 1688

Выполнить онлайн активацию Windows в интернете или на KMS сервере (если указан)

Invoke-OSLicense -ActivateOnline

Проверяем статус активации клиента:

Get-OSLicenseInfo | Select-Object LicenseStatus

Активация Windows на KMS сервере с помощью PowerShell

Если KMS сервер не доступен, получим ошибку:

Success : False
Operation : ActivateOnline
ErrorCode : 0xC004F074
ErrorMessage : The Software Licensing Service reported that the product could not be activated. No Key Management Service (KMS) could be contacted. Please see the Application Event Log for additional information.

ошибка активации Windows 0xC004F074

Офлайн активация Windows (если на компьютере отсутствует доступ в интернет, но вам все понадобится другое устройство/смартфон, где вы сможете вводить и получать коды на портале visualsupport.microsoft.com):

Установить ключ продукта:

Invoke-OSLicense -InstallProductKey "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX"

Получите код установки:

(Get-OSLicenseInfo).OfflineInstallationId

Введите ключ продукта на портале и введите полученный код подтверждения в команде:

Invoke-OSLicense -ConfirmationID 'Полученный_код_подтверждения'

Для управления активацией Windows в доменной среде, если используется активация в AD (Active Directory-based activation, ADBA), используются командлеты Get-ADLicenseInfo и Invoke-ADLicense .

Важный нюанс: в отличии от slmgr, который умел управлять активацией на удаленных компьютерах, командлеты OSLicense не умеют обращаться по сети к другим компьютерам. Но это ограничение легко обходится через PowerShell Remoting, например:

Invoke-Command -ComputerName wsk023 -ScriptBlock { Get-OSLicenseInfo }

Соответствие параметров slmgr.vbs и командлетов модуля OSLicense

В следующей таблице собраны примеры команд управления активацией из модуля OSLicense и их эквиваленты и устаревшего скрипта slmgr.vbs.

Команда модуля OSLicense Параметр устаревшей slmgr.vbs
Проверить статус активации Get-OSLicenseInfo slmgr /dli
Подробный статус активации по всем продуктам Get-OSLicenseInfo -All slmgr /dlv all
Дату окончания срока действия текущей лицензии Get-OSLicenseInfo | Select-Object Name, LicenseStatus, PartialProductKey, GracePeriodRemaining, EvaluationEndDate slmgr /xpr
Установить новый ключ продукта Invoke-OSLicense -InstallProductKey xxxxxxxx slmgr /ipk xxxxxxxx
Выполнить активацию ОС (через интернет или на указанном KMS сервере) Invoke-OSLicense -ActivateOnline slmgr /ato
Удалить установленный ключ продукта Invoke-OSLicense -UninstallProductKey slmgr /upk
Стереть ключ продукта из реестра (чтобы нельзя было скриптом извлечь ключ Windows) Invoke-OSLicense -ClearProductKeyFromRegistry slmgr /cpky
Сбросить таймер ознакомительного периода (grace period) Invoke-OSLicense -Rearm slmgr /rearm
Получить код установки для офлайн-активации (Get-OSLicenseInfo).OfflineInstallationId slmgr /dti
Ввести код подтверждения Invoke-OSLicense -ConfirmationID 'код' slmgr /atp код
Указать KMS-сервер Set-KmsLicenseInfo -ServerName Srv01 -Port 1688 slmgr /skms srv01:1688
Посмотреть настройки KMS Get-KmsLicenseInfo slmgr /dlv (в блоке KMS)
Сбросить указанный KMS-сервер и порт Invoke-KmsLicense -ClearServer, Invoke-KmsLicense -ClearPort slmgr /ckms
Модуль OSLicense предназначен только для управления активацией Windows, но не продуктами Microsoft Office (для активации Office по-прежнему используется встроенный скрипт ospp.vbs).

Соответственно, если Feature on Demand компонент VBS в Windows не установлен, при запуске любой команды slmgr появится ошибка:

Input Error: There is no script engine for file extension ".vbs".

Проверим, установлен ли компонент:

Get-WindowsCapability -Online -Name "VBSCRIPT*"

не найдена команда slmgr, не установлен компонент vbscript в windows

Так что пора обновлять ваши скрипты для управления активацией Windows на клиентах (к сожалению, в WinPE пока альтернативы slmgr пока нет).


Предыдущая статья Следующая статья


Комментариев: 2 Оставить комментарий

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *