windows序列号可以直接在注册表中读取,PowerShell要做的只是读出数据后稍作处理,让它更像一个序列号。
复制代码 代码如下:
function Get-ProductKey {
$map="BCDFGHJKMPQRTVWXY2346789"
$value = (get-itemproperty "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion").digitalproductid[0x34..0x42]
$ProductKey = ""
for ($i = 24; $i -ge 0; $i--) {
$r = 0
for ($j = 14; $j -ge 0; $j--) {
$r = ($r * 256) -bxor $value[$j]
$value[$j] = [math]::Floor([double]($r/24))
$r = $r % 24
}
$ProductKey = $map[$r] + $ProductKey
if (($i % 5) -eq 0 -and $i -ne 0) {
$ProductKey = "-" + $ProductKey
}
}
$ProductKey
}
输出结果为:
复制代码 代码如下:
PS> Get-ProductKey
VKTXG-GXXY3-W97QP-GP4PV-XXXXX
【PowerShell中获取Windows系统序列号的脚本分享】相关文章:
★ PowerShell小技巧之获取Windows系统密码Hash
★ Powershell获取图片名字、文件夹及拍摄时间的例子
★ PowerShell中使用Get-EventLog读取、筛选系统日志的例子
★ PowerShell函数中使用$PSBoundParameters获取输入参数列表实例