Script PowerShell para inventário automático de licenças Microsoft numa PME https://www.portugaldigitalexport.com/office/
Find a file
2026-09-22 19:01:23 +02:00
README.md Adicionar README com script PowerShell de inventario 2026-09-22 19:01:23 +02:00

Inventário de Licenças Microsoft com PowerShell

Ferramenta simples para técnicos de TI de PME auditarem as licenças Microsoft instaladas em toda a rede, sem software pago, só PowerShell nativo.

Problema

Numa empresa com 20 a 100 postos de trabalho, saber exactamente quais licenças Microsoft estão instaladas — e se são válidas — é mais difícil do que parece. Os dados estão distribuídos por várias máquinas, e muitas PME não têm uma solução de inventário centralizada.

Solução: script PowerShell de inventário remoto

Este repositório contém um script que corre localmente ou remotamente (via WinRM) e recolhe:

  • Nome do produto Microsoft instalado
  • Chave parcial da licença
  • Estado de activação (Licenciado / Não licenciado / Em período de graça)
  • Nome do computador e utilizador actual

Script principal: Inventario-Licencas.ps1

param(
    [string[]]$Computadores = @($env:COMPUTERNAME),
    [string]$Exportar = ""
)

$resultados = foreach ($pc in $Computadores) {
    try {
        $licencas = Get-WmiObject -ComputerName $pc -Class SoftwareLicensingProduct -ErrorAction Stop |
            Where-Object { $_.Name -like "*Office*" -or $_.Name -like "*Windows*" } |
            Where-Object { $_.PartialProductKey -ne $null }

        foreach ($lic in $licencas) {
            $estado = switch ($lic.LicenseStatus) {
                0 { "Nao licenciado" }
                1 { "Licenciado" }
                2 { "Em periodo de graca" }
                3 { "Notificacao" }
                default { "Desconhecido" }
            }
            [PSCustomObject]@{
                Computador    = $pc
                Produto       = $lic.Name
                ChaveParcial  = $lic.PartialProductKey
                Estado        = $estado
            }
        }
    } catch {
        Write-Warning "Nao foi possivel ligar a $pc"
    }
}

if ($Exportar) {
    $resultados | Export-Csv -Path $Exportar -NoTypeInformation -Encoding UTF8
    Write-Host "Resultados exportados para $Exportar"
} else {
    $resultados | Format-Table -AutoSize
}

Utilizacao

# Inventariar o computador local
.\Inventario-Licencas.ps1

# Inventariar uma lista de computadores remotos
.\Inventario-Licencas.ps1 -Computadores "PC-01","PC-02","SRV-01" -Exportar "inventario.csv"

Pre-requisitos

  • PowerShell 5.1 ou superior (incluido no Windows 10/11 e Windows Server 2016+)
  • WinRM activo nos computadores remotos: Enable-PSRemoting -Force
  • Permissoes de administrador local (ou administrador de dominio para acesso remoto)

Quando os resultados revelam um problema

Se o script mostrar postos em "Notificacao" ou "Em periodo de graca", a licenca instalada nao esta correctamente activada. As causas mais comuns numa PME sao:

  • Chave de volume KMS sem servidor KMS alcancavel
  • Licenca OEM transferida para um computador diferente
  • Versao do Office incompativel com a licenca adquirida

Para escolher a versao adequada de Office ou Windows para a sua PME, consulte o guia de licenciamento Microsoft para PME.

Licenca

MIT — livre para uso comercial e adaptacao interna.