
В этой статье мы покажем, как убедиться, что ваша копия Windows активирована на компьютере, и проверить статус активации Windows на всех компьютерах в доменной сети Active Directory с помощью PowerShell.
Как проверить, активирована ли Windows?
Прежде всего, давайте рассмотрим, как проверить статус активации Windows на вашем компьютере. Статус активации Windows можно посмотреть в приложении «Настройки» (в современных сборках Windows 10 и Windows 11).
- В Windows 10 и Windows Server 2022/2019/2016 перейдите в раздел Настройки -> Обновление и безопасность -> Активация (или запустите программу
ms-settings:activation
URI для быстрого доступа к ms-settings) - В Windows 11 откройте Настройки -> Система -> Активация
Вы можете увидеть один из следующих статусов активации:
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
Not Activated – 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
Вы можете использовать PowerShell для получения информации об активации Windows на локальном или удаленном компьютере. Выполните следующую команду, чтобы получить данные из CIM (WMI):
Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" | where { $_.PartialProductKey } | select Description, LicenseStatus
Возможные значения LicenseStatus:
- 0 — Нелицензионный
- 1 — Лицензированный
- 2 — OOBGrace
- 3 — OOTGrace — конфигурация компьютера была изменена, и ее нельзя активировать автоматически, или прошло более 180 дней
- 4 — NonGenuineGrace
- 5 — Уведомление — пробный период Windows окончен
- 6 — ExtendedGrace (вы можете несколько раз продлить период оценки Windows с помощью функции
slmgr /rearm
или преобразовать ознакомительную версию в полную)
На скриншоте ниже показано, что LicenseStatus = 1
. Это означает, что Windows активирована с помощью розничного ключа продукта (Операционная система Windows(R), канал RETAIL).
Чтобы получить статус активации удаленного компьютера, укажите его имя в поле -ComputerName параметр:
Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" -ComputerName mun-srv03 |where { $_.PartialProductKey } | select Description, LicenseStatus
[VOLUME_KMSCLIENT channel
означает, что компьютер активирован на сервере KMS.
Получение статуса активации Windows на компьютерах AD с помощью PowerShell
Вы можете использовать PowerShell для удаленного получения статусов активации настольных компьютеров Windows и узлов Windows Server в домене Active Directory. Пример сценария приведен ниже.
Чтобы получить список компьютеров в домене, используется команда Get-ADComputer из модуля Active Directory for PowerShell. Этот сценарий PowerShell проверяет доступность каждого компьютера в Active Directory по очереди (простой ICMP-пинг с помощью 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 = @()
$ADComps = Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows*'}
Foreach ($comp in $ADComps) {
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 = "Computer offline"
}
}
$Report += $objReport
}
$Report |Out-GridView
Информация о состоянии активации Windows на компьютерах домена отображается в виде таблицы Out-GridView. Или вы можете экспортировать ее в CSV-файл (Export-Csv -Path .\ad_windows_activation_report.csv -NoTypeInformation
).
Таким образом, вы можете быстро найти все неактивированные (нелицензионные) копии Windows на компьютерах в домене.