88 lines
3.1 KiB
Markdown
88 lines
3.1 KiB
Markdown
# 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
|
|
|
|
```powershell
|
|
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
|
|
|
|
```powershell
|
|
# 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](https://www.portugaldigitalexport.com/office/).
|
|
|
|
## Licenca
|
|
|
|
MIT — livre para uso comercial e adaptacao interna.
|