Автоматизация активации Windows постепенно переходит от сценариев VBScript к командлетам PowerShell. Модуль OSLicense позволяет получать сведения о лицензии, выполнять активацию и настраивать KMS через структурированные объекты. Главное при переходе — проверить доступность модуля на целевых машинах и изменить обработку результатов, а не просто заменить название команды.
Почему стоит пересмотреть сценарии со slmgr.vbs
slmgr.vbs зависит от движка VBScript. В опубликованном плане Microsoft предусмотрены три этапа: компонент по требованию включён по умолчанию в Windows 11 24H2, примерно с 2027 года его планируют отключать по умолчанию, затем — полностью удалить в будущих выпусках. Точная дата последнего этапа не указана. Это не означает, что slmgr.vbs уже перестал работать на всех компьютерах. План прекращения поддержки VBScript у Microsoft.
Проверьте сценарии развёртывания, задания управления устройствами и обёртки, вызывающие cscript со slmgr.vbs. Для каждой зависимости запишите назначение команды и условия её запуска. Так будет проще проверить замену на тестовом компьютере.
Проверить наличие OSLicense
Модуль входит в Windows на поддерживаемых системах и требует Windows PowerShell 5.1. Не считайте его установленным только потому, что на компьютере есть PowerShell 7. Начните с Windows PowerShell:
Get-Module -ListAvailable -Name '*OSLicense*'
Get-Command -Module OSLicense
В справке Get-OSLicenseInfo доступность указана для обновления безопасности Windows 11 за сентябрь 2026 года KB5124008 и Windows Server vNext Preview Build 29651. Наличие модуля в предварительной сборке сервера не гарантирует его наличие на ваших действующих серверах. Проверяйте каждую поддерживаемую конфигурацию. Обзор OSLicense, сведения о доступности командлета.
Посмотреть состояние лицензии
Вместо разбора текстового вывода slmgr.vbs /dlv получите объект:
Get-OSLicenseInfo |
Select-Object Name, ActivationID, LicenseStatus, PartialProductKey,
GracePeriodRemaining, EvaluationEndDate
Для всех найденных продуктов используйте Get-OSLicenseInfo -All, для конкретного — параметр ActivationID. Список All может включать не только основную лицензию Windows.

LicenseStatus возвращается как локализованная строка. Поэтому проверка на строгое равенство английскому слову Licensed может ломаться в многоязычной среде. Не используйте EvaluationEndDate как единственный признак активации: дата может отсутствовать. Если команда не вернула объект, отдельно обработайте отсутствие лицензии или ошибку получения данных. Параметры, свойства и особенности Get-OSLicenseInfo.
Активировать систему и проверить результат
Операции изменения лицензирования выполняйте из повышенного сеанса. Одна команда Invoke-OSLicense выбирает одну операцию. Пример онлайн-активации:
$result = Invoke-OSLicense -ActivateOnline
if ($null -eq $result) {
throw 'Служба лицензирования не вернула результат.'
}
if (-not $result.Success) {
throw ('Ошибка активации: {0}; {1}' -f $result.ErrorCode, $result.ErrorMessage)
}
$result | Select-Object Success, Operation, ActivationID, ProductName
При наличии нескольких продуктов укажите проверенный ActivationID. Для установки ключа используется отдельный вызов:
$result = Invoke-OSLicense -InstallProductKey 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX'
$result | Select-Object Success, Operation, ErrorCode, ErrorMessage
Замените образец своим разрешённым ключом. Не записывайте весь возвращённый объект в общие журналы: результаты установки могут содержать ключ. После успешной установки активация выполняется отдельно. Параметры Rearm, UninstallProductKey, ClearProductKeyFromRegistry и ReinstallSystemLicenses предназначены для других самостоятельных операций; не запускайте их вместе как универсальное исправление. Справка Invoke-OSLicense.
Настроить корпоративный KMS
Сначала зафиксируйте текущую конфигурацию, затем задайте сервер своей организации:
Get-KmsLicenseInfo
Set-KmsLicenseInfo -ServerName 'kms01.example.com' -Port 1688
Имя в примере условное. Явное назначение KMS-сервера отключает автоматическое обнаружение этого сервера. Set-KmsLicenseInfo меняет только переданные параметры; пропущенные настройки сохраняются. Проверяйте Success в результате операции. Настройки Set-KmsLicenseInfo.
Отмена явных настроек выполняется отдельными операциями:
Invoke-KmsLicense -ClearServer
Invoke-KmsLicense -ClearPort
Сброс имени сервера и порта не очищает явно заданный домен поиска. Для него существует ClearDomain; ClearListeningPort относится к порту прослушивания KMS-хоста. Выбирайте одну операцию на вызов и проверяйте её результат. Справка Invoke-KmsLicense.
Порядок перехода для автоматизации
- Составьте список вызовов slmgr.vbs и разделите чтение состояния и изменение лицензии.
- Проверьте наличие модуля и команд на тестовых клиентах и серверах.
- Замените разбор текстовых сообщений на проверку объектов, включая отсутствие результата и Success.
- Проверьте ошибки сети, неверный ключ и выбор конкретного продукта.
- Обновите инструкции и затем переносите проверенные изменения в рабочую среду.
Примеры команд иллюстрируют отдельные операции и не являются общим сценарием, который нужно выполнить целиком. Снимки экрана показывают исходный пример; фактические значения зависят от системы и лицензии.
Исходный материал: LazyAdmin — Microsoft is Retiring slmgr.vbs – Here’s what to Use Instead, Rudy Mens. Русскоязычная инструкция подготовлена самостоятельно и дополнена проверкой по документации Microsoft; актуальность проверена 10 октября 2026 года.