all repos — fast-scripts @ 8ea94b47fd8a9d47a6729b6de2aac84198404e27

scripts que podem ser uteis para meu dia a dia

Úteis/relatorio-sistema.cmd (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
<# :
@echo off
powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "Invoke-Expression ([System.IO.File]::ReadAllText('%~f0',[System.Text.Encoding]::UTF8))"
exit /b %errorlevel%
#>

# ============================================================
#  Relatório do sistema - specs, memória, discos e espaço
#  Desenvolvido por Pablo Murad - 2026
# ============================================================

try { [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 } catch {}
try { $Host.UI.RawUI.WindowTitle = 'Relatório do sistema' } catch {}

function Pausar { Write-Host ''; Write-Host 'Pressione Enter para fechar...' -ForegroundColor DarkGray; [void][System.Console]::ReadLine() }
function GB($bytes) { '{0:N1} GB' -f ($bytes/1GB) }

$linhas = New-Object System.Collections.Generic.List[string]
function Add($txt, $cor='Gray') { Write-Host $txt -ForegroundColor $cor; $linhas.Add($txt) }
function Sec($t) {
    Write-Host ''
    Write-Host "== $t ==" -ForegroundColor Cyan
    $linhas.Add(''); $linhas.Add("== $t ==")
}

Write-Host ''
Write-Host '============================================================' -ForegroundColor DarkCyan
Write-Host '  Relatório do sistema' -ForegroundColor Cyan
Write-Host '  Desenvolvido por Pablo Murad - 2026' -ForegroundColor DarkGray
Write-Host '============================================================' -ForegroundColor DarkCyan
$linhas.Add('=== Relatório do sistema - Desenvolvido por Pablo Murad - 2026 ===')
$linhas.Add("Gerado em: $(Get-Date -Format 'dd/MM/yyyy HH:mm')")

try {
    $os  = Get-CimInstance Win32_OperatingSystem
    $cs  = Get-CimInstance Win32_ComputerSystem
    $cpu = Get-CimInstance Win32_Processor | Select-Object -First 1

    Sec 'Computador'
    Add ("Nome:      {0}" -f $env:COMPUTERNAME)
    Add ("Usuário:   {0}" -f $env:USERNAME)
    Add ("Fabricante:{0} {1}" -f $cs.Manufacturer, $cs.Model)
    Add ("Sistema:   {0}" -f $os.Caption)
    Add ("Versão:    {0} (build {1})" -f $os.Version, $os.BuildNumber)
    $boot = $os.LastBootUpTime
    $up = (Get-Date) - $boot
    Add ("Ligado há: {0}d {1}h {2}min  (desde {3:dd/MM HH:mm})" -f $up.Days, $up.Hours, $up.Minutes, $boot)

    Sec 'Processador e memória'
    Add ("CPU:       {0}" -f $cpu.Name.Trim())
    Add ("Núcleos:   {0} físicos / {1} lógicos" -f $cpu.NumberOfCores, $cpu.NumberOfLogicalProcessors)
    $ramTotal = $os.TotalVisibleMemorySize * 1KB
    $ramLivre = $os.FreePhysicalMemory * 1KB
    $ramUso   = $ramTotal - $ramLivre
    $pct = if ($ramTotal -gt 0) { [int](($ramUso / $ramTotal) * 100) } else { 0 }
    Add ("Memória:   {0} no total  |  {1} em uso ({2}%)  |  {3} livre" -f (GB $ramTotal), (GB $ramUso), $pct, (GB $ramLivre))

    Sec 'Vídeo'
    Get-CimInstance Win32_VideoController | ForEach-Object { Add ("GPU:       {0}" -f $_.Name) }

    Sec 'Discos físicos'
    Get-PhysicalDisk | Sort-Object DeviceId | ForEach-Object {
        $tam = if ($_.Size -ge 1TB) { '{0:N2} TB' -f ($_.Size/1TB) } else { GB $_.Size }
        $cor = if ($_.HealthStatus -eq 'Healthy') { 'Green' } elseif ($_.HealthStatus -eq 'Warning') { 'Yellow' } else { 'Red' }
        Add ("[{0}] {1,-26} {2,10}  {3}  ({4})" -f $_.DeviceId, $_.FriendlyName, $tam, $_.HealthStatus, $_.MediaType) $cor
    }

    Sec 'Espaço nas unidades'
    Get-Volume | Where-Object { $_.DriveLetter -and $_.Size -gt 0 } | Sort-Object DriveLetter | ForEach-Object {
        $usado = $_.Size - $_.SizeRemaining
        $pctU = if ($_.Size -gt 0) { [int](($usado / $_.Size) * 100) } else { 0 }
        $rot = if ($_.FileSystemLabel) { $_.FileSystemLabel } else { '(sem rótulo)' }
        $cor = if ($pctU -ge 90) { 'Red' } elseif ($pctU -ge 75) { 'Yellow' } else { 'Gray' }
        Add ("{0}:  {1,-18} {2} livres de {3}  ({4}% usado)" -f $_.DriveLetter, $rot, (GB $_.SizeRemaining), (GB $_.Size), $pctU) $cor
    }
} catch {
    Write-Host "[ERRO] $($_.Exception.Message)" -ForegroundColor Red
}

Write-Host ''
$salvar = Read-Host 'Salvar este relatório num arquivo .txt? (s/N)'
if ($salvar -match '^(s|sim|y|yes)$') {
    $arq = Join-Path ([Environment]::GetFolderPath('Desktop')) ("relatorio-sistema_{0}.txt" -f (Get-Date -Format 'yyyy-MM-dd_HH-mm'))
    try { $linhas | Set-Content -LiteralPath $arq -Encoding UTF8; Write-Host "[OK] Salvo em: $arq" -ForegroundColor Green }
    catch { Write-Host "[ERRO] Não foi possível salvar: $($_.Exception.Message)" -ForegroundColor Red }
}
Pausar