Comando copiado

Inventario de Equipo

Haz clic sobre el comando o en "Copiar" y pégalo directamente en PowerShell.
& {
$DeviceName = [System.Net.Dns]::GetHostName()
$BIOS = Get-CimInstance Win32_BIOS
$ComputerSystem = Get-CimInstance Win32_ComputerSystem
$CPU = Get-CimInstance Win32_Processor | Select-Object -First 1
$OS = Get-CimInstance Win32_OperatingSystem

Write-Host ""
Write-Host "========================================"
Write-Host "         INFORMACION DEL EQUIPO"
Write-Host "========================================"
Write-Host "Nombre del equipo       :" $DeviceName
Write-Host "Marca del equipo        :" $ComputerSystem.Manufacturer
Write-Host "Modelo del equipo       :" $ComputerSystem.Model
Write-Host "Serial del equipo       :" $BIOS.SerialNumber
Write-Host "Procesador              :" $CPU.Name
Write-Host "Sistema operativo       :" $OS.Caption
Write-Host "Version del SO          :" $OS.Version
Write-Host "Build del SO            :" $OS.BuildNumber

Write-Host ""
Write-Host "========================================"
Write-Host "                 OFFICE"
Write-Host "========================================"

$Office = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -ErrorAction SilentlyContinue

if ($Office) {
    Write-Host "Paquete de Office       :" $Office.ProductReleaseIds
    Write-Host "Version de Office       :" $Office.VersionToReport
    Write-Host "Arquitectura Office     :" $Office.Platform
} else {
    Write-Host "Paquete de Office       : No detectado"
    Write-Host "Version de Office       : No disponible"
}

$osppPaths = @(
    "$env:ProgramFiles\Microsoft Office\Office16\OSPP.VBS"
    "$env:ProgramFiles\Microsoft Office\root\Office16\OSPP.VBS"
    "${env:ProgramFiles(x86)}\Microsoft Office\Office16\OSPP.VBS"
    "${env:ProgramFiles(x86)}\Microsoft Office\root\Office16\OSPP.VBS"
)

$ospp = $osppPaths | Where-Object { Test-Path $_ } | Select-Object -First 1

if ($ospp) {
    $LicenseInfo = & cscript.exe //Nologo $ospp /dstatus
    $Status = $LicenseInfo | Select-String "LICENSE STATUS"

    if ($Status) {
        Write-Host "Licencia Office         :" $Status.Line.Trim()
    } else {
        Write-Host "Licencia Office         : No determinada"
    }
} else {
    Write-Host "Licencia Office         : No determinada"
}

Write-Host ""
Write-Host "========================================"
Write-Host "              MEMORIAS RAM"
Write-Host "========================================"

$RAMs = Get-CimInstance Win32_PhysicalMemory
$i = 1

foreach ($RAM in $RAMs) {
    Write-Host ""
    Write-Host "RAM #$i"
    Write-Host "Marca                   :" $RAM.Manufacturer
    Write-Host "Serial                  :" $RAM.SerialNumber
    Write-Host "Part Number             :" $RAM.PartNumber
    Write-Host "Capacidad               :" ([math]::Round($RAM.Capacity / 1GB, 2)) "GB"
    Write-Host "Velocidad               :" $RAM.Speed "MHz"
    $i++
}

Write-Host ""
Write-Host "========================================"
Write-Host "                  DISCOS"
Write-Host "========================================"

$Disks = Get-CimInstance Win32_DiskDrive
$i = 1

foreach ($Disk in $Disks) {
    Write-Host ""
    Write-Host "DISCO #$i"
    Write-Host "Marca / Modelo          :" $Disk.Model
    Write-Host "Fabricante              :" $Disk.Manufacturer
    Write-Host "Serial                  :" $Disk.SerialNumber
    Write-Host "Capacidad               :" ([math]::Round($Disk.Size / 1GB, 2)) "GB"
    $i++
}

Write-Host ""
Write-Host "========================================"
Write-Host "                MONITORES"
Write-Host "========================================"

$MonitorIDs = Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorID -ErrorAction SilentlyContinue
$MonitorSizes = Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams -ErrorAction SilentlyContinue

$i = 1

foreach ($Monitor in $MonitorIDs) {

    if ($Monitor.ManufacturerName) {
        $Marca = ([System.Text.Encoding]::ASCII.GetString($Monitor.ManufacturerName)).Trim([char]0)
    } else {
        $Marca = "No disponible"
    }

    if ($Monitor.UserFriendlyName) {
        $Modelo = ([System.Text.Encoding]::ASCII.GetString($Monitor.UserFriendlyName)).Trim([char]0)
    } else {
        $Modelo = "No disponible"
    }

    if ($Monitor.SerialNumberID) {
        $Serial = ([System.Text.Encoding]::ASCII.GetString($Monitor.SerialNumberID)).Trim([char]0)
    } else {
        $Serial = "No disponible"
    }

    $Size = $MonitorSizes | Where-Object { $_.InstanceName -eq $Monitor.InstanceName } | Select-Object -First 1

    if ($Size -and $Size.MaxHorizontalImageSize -gt 0 -and $Size.MaxVerticalImageSize -gt 0) {
        $Horizontal = [double]$Size.MaxHorizontalImageSize
        $Vertical = [double]$Size.MaxVerticalImageSize
        $DiagonalCM = [math]::Sqrt(($Horizontal * $Horizontal) + ($Vertical * $Vertical))
        $Pulgadas = [math]::Round($DiagonalCM / 2.54, 1)
    } else {
        $Pulgadas = "No disponible"
    }

    Write-Host ""
    Write-Host "MONITOR #$i"
    Write-Host "Modelo                  :" $Modelo
    Write-Host "Marca                   :" $Marca
    Write-Host "Serial                  :" $Serial
    Write-Host "Pulgadas                :" $Pulgadas
    $i++
}

Write-Host ""
Write-Host "========================================"
Write-Host "          FIN DEL INVENTARIO"
Write-Host "========================================"
}