Cómo obtener la clave de producto (Product Key) o clave de licencia de un equipo con sistema operativo Windows (probado en Windows Server 2003, Windows Server 2008, Windows Server 2012, Windows 7, Windows 8). Además, el script Windows PowerShell que crearemos permitirá obtener el Product Key de un equipo remoto de nuestra red. Mostramos cómo hacerlo sin emplear software de terceros, solo desde nuestro Windows.
- Requisitos para mostrar la clave de producto (product key) de un equipo Windows local o remoto con PowerShell.
- Script PowerShell para obtener el Product Key de equipo Windows remoto y sistema operativo.
- Cómo ejecutar el script PowerShell para mostrar la clave de producto (product key) de Windows.
- Anexo.
Requisitos para mostrar la clave de producto (product key) de un equipo Windows local o remoto con PowerShell
Como requisito solo necesitamos disponer de Windows PowerShell instalado en nuestro equipo. Se trata de una herramienta de la línea de comandos desarrollada por Microsoft que recuerza en gran medida la administración de los equipos desde la línea de comandos. Windows PowerShell suele venir ya instalado en equipos con Windows 7, Windows Server 2008, Windows Server 2012, Windows 8, etc. Si no lo tenemos instalado lo descargaremos de la web oficial de Microsoft y lo instalaremos.
Si queremos obtener claves de producto (product key) de equipos remotos desde otro equipo, necesitaremos disponer de los privilegios apropiados para el acceso. Lo habitual es que todos los equipos estén agregados a un dominio Windows, por lo que deberemos ejecutar el script PowerShell con un usuario con permisos suficientes para acceso al registro de configuraciones de Windows del equipo remoto.
Por último, en el equipo donde ejecutemmos el script PowerShell deberemos tener habilitada la directiva correspondiente que nos permitirá ejecutar scritps de PowerShell. Para habilitar esta directiva abriremos PowerShell, desde «Inicio» – «Todos los programas» – «Accesorios» – «Windows PowerShell», lo ejecutaremos como administradores pulsando con el botón derecho y seleccionando «Ejecutar como administrador»:
Introduciremos el siguiente comando y pulsaremos INTRO:
1 |
Set-ExecutionPolicy remotesigned |
Que nos solicitará si estamos seguros de cambiar la directiva, pulsaremos «s» e INTRO:
Cambio de directiva de ejecución
La directiva de ejecución le ayuda a protegerse de scripts en los que no confía. Si cambia dicha directiva podría
exponerse a los riesgos de seguridad descritos en el tema de la Ayuda about_Execution_Policies. ¿Desea cambiar la
directiva de ejecución?
[S] Sí [N] No [U] Suspender [?] Ayuda (el valor predeterminado es «S»): s
Script PowerShell para obtener el Product Key de equipo Windows remoto y sistema operativo
A continuación mostramos el scritp PowerShell que permitirá obtener la clave de producto (product key) de un equipo con sistema operativo Windows, incluso en remoto. Copiaremos el siguiente código a un fichero (abriendo «notepad»):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
function Get-ProductKey { [cmdletbinding()] Param ( [parameter(ValueFromPipeLine=$True,ValueFromPipeLineByPropertyName=$True)] [Alias("CN","__Server","IPAddress","Server")] [string[]]$Computername = $Env:Computername ) Begin { $map="BCDFGHJKMPQRTVWXY2346789" } Process { ForEach ($Computer in $Computername) { Write-Verbose ("{0}: Checking network availability" -f $Computer) If (Test-Connection -ComputerName $Computer -Count 1 -Quiet) { Try { Write-Verbose ("{0}: Retrieving WMI OS information" -f $Computer) $OS = Get-WmiObject -ComputerName $Computer Win32_OperatingSystem -ErrorAction Stop } Catch { $OS = New-Object PSObject -Property @{ Caption = $_.Exception.Message Version = $_.Exception.Message } } Try { Write-Verbose ("{0}: Attempting remote registry access" -f $Computer) $remoteReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$Computer) If ($OS.OSArchitecture -eq '64-bit') { $value = $remoteReg.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue('DigitalProductId4')[0x34..0x42] } Else { $value = $remoteReg.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue('DigitalProductId')[0x34..0x42] } $ProductKey = "" Write-Verbose ("{0}: Translating data into product key" -f $Computer) 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 } } } Catch { $ProductKey = $_.Exception.Message } $object = New-Object PSObject -Property @{ Computername = $Computer ProductKey = $ProductKey OSDescription = $os.Caption OSVersion = $os.Version } $object.pstypenames.insert(0,'ProductKey.Info') $object } Else { $object = New-Object PSObject -Property @{ Computername = $Computer ProductKey = 'Unreachable' OSDescription = 'Unreachable' OSVersion = 'Unreachable' } $object.pstypenames.insert(0,'ProductKey.Info') $object } } } } |
Guardaremos el script PowerShell en un fichero pulsando en «Archivo» – «Guardar como»:
Es importante que en «Tipo» especifiquemos «Todos los archivos (*.*)» para que Notepad no nos añada la extensión .txt al final del nombre, introduciremos un nombre para el fichero de script, por ejemplo «Get-ProductKey.ps1»:
Cómo ejecutar el script PowerShell para mostrar la clave de producto (product key) de Windows
Abriremos PowerShell, desde «Inicio» – «Todos los programas» – «Accesorios» – «Windows PowerShell», lo ejecutaremos como administradores pulsando con el botón derecho y seleccionando «Ejecutar como administrador»:
Accederemos desde PowerShell a la unidad y carpeta donde hayamos creado el fichero de script, en nuestro caso en el ráiz de C:, una vez en la carpeta (no es necesario acceder a ella si la especificamos en la ejecución del script). Para ejecutar el script y obtener la clave de producto (product key) de un equipo Windows remoto introduciremos el siguiente comando:
1 |
Import-Module C:\Get-ProductKey.ps1; Get-ProductKey -ComputerName "PCALONSO" |
Donde:
- PCALONSO: nombre DNS del PC del que queremos obtener el product key.
- C:\Gest-ProductKey.ps1: ubicación y nombre del fichero de script PowerShell.
- Get-ProductKey: nombre del procedimiento que va dentro del fichero de script.
Si tenemos los permisos suficientes y existe el equipo remoto especificado (o equipo local) nos obtendrá el sistema operativo (versión y nombre) y la clave de producto (product key):
Anexo
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Reservados todos los derechos.
PS C:\> .\product_key.ps1
No se puede cargar el archivo C:\product_key.ps1 porque en el sistema está deshabilitada la ejecución de scripts. Vea «get-help about_signing» para obtener más información.
En línea: 1 Carácter: 18
+ .\product_key.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException