Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Sistemas Operativos: Obtener la clave de producto de un equipo Windows remoto con PowerShell
Windows


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 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.
  • Artículos relacionados.
  • Créditos.
  • 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":

    Requisitos para mostrar la clave de producto (product key) de un equipo Windows local o remoto con PowerShell

    Introduciremos el siguiente comando y pulsaremos INTRO:

    Set-ExecutionPolicy remotesigned

    Requisitos para mostrar la clave de producto (product key) de un equipo Windows local o remoto con PowerShell

    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"):

    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":

    Script PowerShell para obtener el Product Key de equipo Windows remoto y sistema operativo

    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":

    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

    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":

    Cómo ejecutar el script PowerShell para mostrar la clave de producto (product key) de Windows

    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:

    Import-Module C:\Get-ProductKey.ps1; Get-ProductKey -ComputerName "PCALONSO"

    Cómo ejecutar el script PowerShell para mostrar la clave de producto (product key) de Windows

    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):

    Cómo ejecutar el script PowerShell para mostrar la clave de producto (product key) de Windows

     

    Anexo

    • Error que se producirá si no habilitamos la directiva para ejecución de scripts PowerShell:

    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

     

     

    Artículos relacionados

    Créditos

    Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft.

    Artículo en inglés.


    Anuncios


    Enviado el Viernes, 28 noviembre a las 19:21:20 por ajpdsoft
    Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A