美文网首页
找回已激活的SQL秘钥

找回已激活的SQL秘钥

作者: milo_e1ce | 来源:发表于2017-10-25 17:59 被阅读0次

        之前激活的秘钥已经忘记了,只能想办法从老机器上尝试找回秘钥。查了下用powershell会比较方便,也有现成的函数。

    支持SQL Server 2008, 2008 R2

    function Get-SQLServerKey {

    ## function to retrieve the license key of a SQL 2008 Server.

    param ($targets = ".")

    $hklm = 2147483650

    $regPath = "SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\Setup"

    $regValue1 = "DigitalProductId"

    $regValue2 = "PatchLevel"

    $regValue3 = "Edition"

    Foreach ($target in $targets) {

    $productKey = $null

    $win32os = $null

    $wmi = [WMIClass]"\\$target\root\default:stdRegProv"

    $data = $wmi.GetBinaryValue($hklm,$regPath,$regValue1)

    [string]$SQLver = $wmi.GetstringValue($hklm,$regPath,$regValue2).svalue

    [string]$SQLedition = $wmi.GetstringValue($hklm,$regPath,$regValue3).svalue

    $binArray = ($data.uValue)[52..66]

    $charsArray = "B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9"

    ## decrypt base24 encoded binary data

    For ($i = 24; $i -ge 0; $i--) {

    $k = 0

    For ($j = 14; $j -ge 0; $j--) {

    $k = $k * 256 -bxor $binArray[$j]

    $binArray[$j] = [math]::truncate($k / 24)

    $k = $k % 24

    }

    $productKey = $charsArray[$k] + $productKey

    If (($i % 5 -eq 0) -and ($i -ne 0)) {

    $productKey = "-" + $productKey

    }

    }

    $productKey = $charsArray[$k] + $productKey

    If (($i % 5 -eq 0) -and ($i -ne 0)) {

    $productKey = "-" + $productKey

    }

    }

    $win32os = Get-WmiObject Win32_OperatingSystem -computer $target

    $obj = New-Object Object

    $obj | Add-Member Noteproperty Computer -value $target

    $obj | Add-Member Noteproperty OSCaption -value $win32os.Caption

    $obj | Add-Member Noteproperty OSArch -value $win32os.OSArchitecture

    $obj | Add-Member Noteproperty SQLver -value $SQLver

    $obj | Add-Member Noteproperty SQLedition -value $SQLedition

    $obj | Add-Member Noteproperty ProductKey -value $productkey

    $obj

    }

    }

    支持SQL Server 2012

    function Get-SQLServerKey {

    ## function to retrieve the license key of a SQL 2012 Server.

    param ($targets = ".")

    $hklm = 2147483650

    $regPath = "SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup"

    $regValue1 = "DigitalProductId"

    $regValue2 = "PatchLevel"

    $regValue3 = "Edition"

    Foreach ($target in $targets) {

    $productKey = $null

    $win32os = $null

    $wmi = [WMIClass]"\\$target\root\default:stdRegProv"

    $data = $wmi.GetBinaryValue($hklm,$regPath,$regValue1)

    [string]$SQLver = $wmi.GetstringValue($hklm,$regPath,$regValue2).svalue

    [string]$SQLedition = $wmi.GetstringValue($hklm,$regPath,$regValue3).svalue

    $binArray = ($data.uValue)[0..16]

    $charsArray = "B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9"

    ## decrypt base24 encoded binary data

    For ($i = 24; $i -ge 0; $i--) {

    $k = 0

    For ($j = 14; $j -ge 0; $j--) {

    $k = $k * 256 -bxor $binArray[$j]

    $binArray[$j] = [math]::truncate($k / 24)

    $k = $k % 24

    }

    $productKey = $charsArray[$k] + $productKey

    If (($i % 5 -eq 0) -and ($i -ne 0)) {

    $productKey = "-" + $productKey

    }

    }

    $win32os = Get-WmiObject Win32_OperatingSystem -computer $target

    $obj = New-Object Object

    $obj | Add-Member Noteproperty Computer -value $target

    $obj | Add-Member Noteproperty OSCaption -value $win32os.Caption

    $obj | Add-Member Noteproperty OSArch -value $win32os.OSArchitecture

    $obj | Add-Member Noteproperty SQLver -value $SQLver

    $obj | Add-Member Noteproperty SQLedition -value $SQLedition

    $obj | Add-Member Noteproperty ProductKey -value $productkey

    $obj

    }

    }

    相关文章

      网友评论

          本文标题:找回已激活的SQL秘钥

          本文链接:https://www.haomeiwen.com/subject/nyqcpxtx.html