Проверка статуса активации Windows

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

Как узнать, активирована ли Windows на компьютере?

Сначала рассмотрим, как узнать статус активации Windows на вашем компьютере. В современных билдах Windows 10 и Windows 11 информацию об активации Windows можно получить их приложения Параметры (Settings).

Возможны следующие значения в статусе активации:

  • Windows is activated using your organization’s activation service – значит ваша копия Windows активирована на корпоративном KMS сервере (FAQ по KMS активации); Windows на компьютере активирована с помощью KMS - статус активации
  • Windows is activated with a digital license – ваша копия Windows активирована цифровой лицензией, не привязанной к аккаунту пользователя Microsoft; Windows 10 активирована с цифровой лицензией
  • Windows is activated with a digital license linked to your Microsoft account
  • N ot Activate – Windows reported that no product key was found on your device. Error code: 0xC004F214 – Windows установлена без ключа и не активирована.

Можно получить статус активации Windows из команды строки. Для этого используется скрипт SLMgr.vbs, который используется для управления лицензиями и активацией Windows. Откройте командную строку ( cmd ) с правами администратора и выполните команду:

slmgr /xpr

slmgr /xpr

Через несколько секунд появится окно с текстом “The machine is permanently activated”.

Если Windows не активирована, появится сообщение Windows is in Notification mode .

Совет. Если информацию о статусе активации нужно вывести в консоль командной строки, воспользуйтесь такой командой: cscript slmgr.vbs -xpr

Для получения информации об активации Windows на локальном или удаленном компьютере можно использовать PowerShell. Выполните следующую команду для получения данных из CIM (WMI):

Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" | where { $_.PartialProductKey } | select Description, LicenseStatus

Возможные значения параметра LicenseStatus:

  • 0 — Unlicensed
  • 1 — Licensed
  • 2 — OOBGrace
  • 3 – OOTGrace – конфигурация компьютера изменена, и он не может активироваться автоматически, или прошло более 180 дней
  • 4 — NonGenuineGrace
  • 5 – Notification – срок ознакомительного использования Windows окончен
  • 6 – ExtendedGrace (срок использования ознакомительной версии Windows можно продлить несколько раз с помощью команды slmgr /rearm или конвертировать в полноценную)

На скриншоте видно значение LicenseStatus = 1 , это значит, что Windows активирована ретейл ключом (Windows(R) Operating System, RETAIL channel).

Get-CimInstance SoftwareLicensingProduct - получить статус активации Windows из PowerShell

Чтобы получить статус активации с удаленного компьютера, укажите его имя в параметре ComputerName:

Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" -ComputerName msk-srv01 |where { $_.PartialProductKey } | select Description, LicenseStatus

Строка VOLUME_KMSCLIENT channel говорит о том, что компьютер активирован на KMS сервере.

статус активации Windows - VOLUME_KMSCLIENT channel

Или используйте WinRM командлеты Enter-PSSession или Invoke-Command для доступа к удаленному компьютеру.

Получаем статус активации Windows в домене AD с помощью PowerShell

Вы можете использовать PowerShell для удаленного сбора статуса об активации десктопных редакций Windows и Windows Server в домене Active Directory. Ниже представлен готовый пример такого скрипта.

Для получения списка компьютер в домене используется командлет Get-ADComputer из модуля Active Directory PowerShell. Данный PowerShell скрипт последовательно проверяет доступность каждого компьютера из Active Directory (простая проверка ICMP ping с помощью Test-NetConnection), получает версию и билд ОС и статус активации Windows.

enum Licensestatus{
Unlicensed = 0
Licensed = 1
Out_Of_Box_Grace_Period = 2
Out_Of_Tolerance_Grace_Period = 3
Non_Genuine_Grace_Period = 4
Notification = 5
Extended_Grace = 6
}
$Report = @()
$complist = Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows*'}
Foreach ($comp in $complist) {

If ((Test-NetConnection $comp.name -WarningAction SilentlyContinue).PingSucceeded -eq $true){
$activation_status= Get-CimInstance -ClassName SoftwareLicensingProduct -ComputerName $comp.name -Filter "Name like 'Windows%'" |where { $_.PartialProductKey } | select PSComputerName, @{N=’LicenseStatus’; E={[LicenseStatus]$_.LicenseStatus}}
$windowsversion= Get-CimInstance -ClassName Win32_OperatingSystem -ComputerName $comp.name| select Caption, Version
$objReport = [PSCustomObject]@{
ComputerName = $activation_status.PSComputerName
LicenseStatus= $activation_status.LicenseStatus
Version = $windowsversion.caption
Build = $windowsversion.Version
}
}
else {
$objReport = [PSCustomObject]@{
ComputerName = $comp.name
LicenseStatus = "Offline"
}
}
$Report += $objReport
}
$Report |Out-GridView

Скрипт доступен в нашем репозитории на GitHub https://github.com/winadm/posh/blob/master/ActiveDirectory/GetWindowsActivationStatusAD.ps1.

Информация по статусу активации Windows на компьютерах домена предоставлена в виде таблицы Out-Gridview. Либо вы можете экспортировать ее в CSV файл ( Export-Csv -Path .\win_activation_report.csv -NoTypeInformation ).

получить статус активации Windows на комьютерах домена с помощью скрипта PowerShell

Таким образом вы можете быстро найти все неактивированные (нелицензированные) копии Windows в вашем домене.

 


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


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

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

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

Я не робот( Обязательно отметьте)