|
Sistemas Operativos: Obtener la clave de producto de un equipo Windows remoto con PowerShell
Tutorial donde mostramos paso a paso 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 PowerShellComo 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:
Que nos solicitará si estamos seguros de cambiar la directiva, pulsaremos "s" e INTRO:
Script PowerShell para obtener el Product Key de equipo Windows remoto y sistema operativoA 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"): Guardaremos el script PowerShell en un fichero pulsando en "Archivo" - "Guardar como":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 } } } } 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 WindowsAbriremos 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:
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
Artículos relacionados
CréditosArtículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft. Anuncios
Enviado el Viernes, 28 noviembre a las 19:21:20 por ajpdsoft
|
|