การตรวจสอบสถานะการเปิดใช้งาน Windows บนคอมพิวเตอร์ Active Directory
ในบทความนี้ เราจะแสดงวิธีตรวจสอบให้แน่ใจว่าสำเนา Windows ของคุณเปิดใช้งานบนคอมพิวเตอร์ และตรวจสอบสถานะการเปิดใช้งาน Windows จากคอมพิวเตอร์ทุกเครื่องในเครือข่ายโดเมน Active Directory โดยใช้ PowerShell
วิธีตรวจสอบว่า Windows เปิดใช้งานอยู่หรือไม่
ก่อนอื่น มาดูวิธีตรวจสอบสถานะการเปิดใช้งาน Windows บนคอมพิวเตอร์ของคุณ คุณสามารถดูสถานะการเปิดใช้งาน Windows ได้โดยใช้แอปการตั้งค่า (ใน Windows 10 และ Windows 11 รุ่นใหม่)
ใน Windows 10 และ Windows Server 2022/2019/2016 ให้ไปที่ การตั้งค่า -> การอัปเดตและความปลอดภัย -> การเปิดใช้งาน (หรือเรียกใช้
ms-settings:activationคำสั่ง URI เพื่อเข้าถึงการตั้งค่า ms อย่างรวดเร็ว)
ใน Windows 11 ให้เปิด การตั้งค่า -> ระบบ -> การเปิดใช้งาน
วันนี้ Microsoft เสนอให้อัปเกรดจาก Windows 10 รุ่นล่าสุดเป็น Windows 11 ฟรี หากคอมพิวเตอร์ที่มีใบอนุญาต Windows 10 แบบดิจิทัลลงทะเบียนในบัญชี Microsoft ของคุณ หลังจากอัปเกรดเป็น Windows 1 คอมพิวเตอร์จะตรวจสอบใบอนุญาตดิจิทัลและเปิดใช้งาน Windows โดยอัตโนมัติ
คุณอาจเห็นสถานะการเปิดใช้งานอย่างใดอย่างหนึ่งต่อไปนี้:
Windows is activated using your organization’s activation service- หมายความว่าสำเนา Windows ของคุณถูกเปิดใช้งานบนเซิร์ฟเวอร์ KMS ขององค์กร (คำถามที่พบบ่อยเกี่ยวกับการเปิดใช้งาน KMS)
Windows is activated with a digital license- สำเนา Windows ของคุณเปิดใช้งานโดยใช้ใบอนุญาตดิจิทัลที่ไม่ได้เชื่อมโยงกับบัญชีผู้ใช้ Microsoft
Windows is activated with a digital license linked to your Microsoft accountNot 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) Operating System, RETAIL channel)
ในการรับสถานะการเปิดใช้งานของคอมพิวเตอร์ระยะไกล ให้ระบุชื่อในพารามิเตอร์ -ComputerName:
Get-CimInstance SoftwareLicensingProduct -Filter "Name like 'Windows%'" -ComputerName mun-srv03 |where { $_.PartialProductKey } | select Description, LicenseStatusนี้
VOLUME_KMSCLIENT channelสตริงหมายความว่าคอมพิวเตอร์เปิดใช้งานบนเซิร์ฟเวอร์ KMS
หรือใช้ Enter-PSSession หรือ Invoke-Command WinRM cmdlets เพื่อเข้าถึงคอมพิวเตอร์ระยะไกล
รับสถานะการเปิดใช้งาน Windows บนคอมพิวเตอร์ AD ด้วย PowerShell
คุณสามารถใช้ PowerShell เพื่อรับสถานะการเปิดใช้งานของคอมพิวเตอร์เดสก์ท็อป Windows และโฮสต์ Windows Server จากระยะไกลในโดเมน Active Directory คุณสามารถดูตัวอย่างสคริปต์ด้านล่าง
ในการรับรายการคอมพิวเตอร์ในโดเมน จะใช้ Get-ADComputer cmdlet จาก Active Directory สำหรับโมดูล PowerShell สคริปต์ PowerShell นี้จะตรวจสอบความพร้อมใช้งานของคอมพิวเตอร์แต่ละเครื่องใน Active Directory ในทางกลับกัน (การ ping 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 สคริปต์มีอยู่ใน GitHub repo ของฉัน: https://github.com/maxbakhub/winposh/blob/main/ActiveDirectory/AD_Computers_Check_Windows_Activation_Status.ps1
ข้อมูลเกี่ยวกับสถานะการเปิดใช้งาน Windows บนคอมพิวเตอร์โดเมนจะแสดงในรูปแบบของตาราง Out-GridView หรือคุณสามารถส่งออกเป็นไฟล์ CSV (
Export-Csv -Path .\ad_windows_activation_report.csv -NoTypeInformation).
คุณสามารถค้นหาสคริปต์ PowerShell ที่คล้ายกันเพื่อตรวจสอบสถานะการเปิดใช้งาน Microsoft Office บนคอมพิวเตอร์โดเมน
ดังนั้น คุณสามารถค้นหาสำเนา Windows ที่ไม่ได้เปิดใช้งาน (ไม่มีใบอนุญาต) ทั้งหมดบนคอมพิวเตอร์ในโดเมนของคุณได้อย่างรวดเร็ว





