В этой статье мы рассмотрим, как узнать активирована ли копия Windows на вашем компьютере, и получить статус активации Windows со всех компьютеров в вашей сети с помощью PowerShell.
Как узнать, активирована ли Windows на компьютере?
Сначала рассмотрим, как узнать статус активации Windows на вашем компьютере. В современных билдах Windows 10 и Windows 11 информацию об активации Windows можно получить их приложения Параметры (Settings).
- В Windows 10 и Windows Server 2022/2019 перейдите в Settings -> Update & Security -> Activation (или выполните команду
ms-settings:activation
для быстрого доступа к нужному разделу ms-settings); - В Windows 11: Settings -> System -> ActivationНа данный момент Microsoft предлагает всем пользователям бесплатно обновиться с последних билдов Windows 10 до Windows 11. Если в вашем аккаунте Microsoft зарегистрирован компьютер с цифровой лицензией Window 10, то после апгрейда до Windows 11 компьютер должен автоматически проверить цифровую лицензию и активировать Windows. Обратите внимание на особенности переактивации Windows после замена части железа компьютера или переустановки.
Возможны следующие значения в статусе активации:
-
Windows is activated using your organization’s activation service
– значит ваша копия Windows активирована на корпоративном KMS сервере (FAQ по KMS активации); -
Windows is activated with a digital license
– ваша копия Windows активирована цифровой лицензией, не привязанной к аккаунту пользователя Microsoft; -
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
Через несколько секунд появится окно с текстом “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).
Чтобы получить статус активации с удаленного компьютера, укажите его имя в параметре ComputerName:
Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" -ComputerName msk-srv01 |where { $_.PartialProductKey } | select Description, LicenseStatus
Строка
VOLUME_KMSCLIENT channel
говорит о том, что компьютер активирован на KMS сервере.
Получаем статус активации 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
Информация по статусу активации Windows на компьютерах домена предоставлена в виде таблицы Out-Gridview. Либо вы можете экспортировать ее в CSV файл (
Export-Csv -Path .\win_activation_report.csv -NoTypeInformation
).
Таким образом вы можете быстро найти все неактивированные (нелицензированные) копии Windows в вашем домене.