Napísal som skript v PowerShell, ktorý ma zaúlohu pomôcť v inventarizácií majetku
Zisťuje:
- Hostname
- Serial Number (SN)
- RAM, aká je momentalne použitá a do akej kapacity ju môžeme rozšíriť
- TMP modul
- Stav batérie
- Disk – model a kapacita
- a na konci urobí report v html formáte
Príprava skriptu:
Vytvoríme priečinok na disku C a pomenujeme ho Tools
C:\Tools
Tu vytvoríme TXT súbor a pomenujeme ho: system_info.ps1
Vložíme skript
# system_info.ps1
Clear-Host
Write-Host "=== SYSTEM INFORMATION ===" -ForegroundColor Cyan
# SYSTEM
# SYSTEM
$computer = Get-CimInstance Win32_ComputerSystem
$os = Get-CimInstance Win32_OperatingSystem
$sysProduct = Get-CimInstance Win32_ComputerSystemProduct
Write-Host "Computer Name: $($computer.Name)"
Write-Host "Manufacturer: $($computer.Manufacturer)"
Write-Host "Model: $($computer.Model)"
Write-Host "Part Number: $(if ($sysProduct.PartNumber) { $sysProduct.PartNumber } else { 'N/A' })"
Write-Host "Serial Number: $(if ($sysProduct.IdentifyingNumber) { $sysProduct.IdentifyingNumber } else { 'N/A' })"
Write-Host "OS: $($os.Caption) $($os.OSArchitecture)"
$computer = Get-CimInstance Win32_ComputerSystem
$os = Get-CimInstance Win32_OperatingSystem
Write-Host "Computer Name: $($computer.Name)"
Write-Host "Manufacturer: $($computer.Manufacturer)"
Write-Host "Model: $($computer.Model)"
Write-Host "OS: $($os.Caption) $($os.OSArchitecture)"
# MEMORY
Write-Host "`n=== MEMORY ===" -ForegroundColor Cyan
$totalRam = [math]::Round($computer.TotalPhysicalMemory / 1GB, 2)
$ramMax = (Get-CimInstance Win32_PhysicalMemoryArray | Measure-Object MaxCapacity -Sum).Sum
$ramMaxGB = if ($ramMax) { [math]::Round($ramMax / 1024,2) } else { "N/A" }
Write-Host ("Installed RAM: {0:N2} GB" -f $totalRam)
Write-Host ("Max Supported RAM: {0} GB" -f $ramMaxGB)
Write-Host "Memory Modules:"
Get-CimInstance Win32_PhysicalMemory | ForEach-Object {
$sizeGB = [math]::Round($_.Capacity / 1GB, 2)
Write-Host " Slot $($_.DeviceLocator): $sizeGB GB, Speed: $($_.Speed) MHz, Manufacturer: $($_.Manufacturer)"
}
# TPM
Write-Host "`n=== TPM ===" -ForegroundColor Cyan
$tpm = Get-CimInstance -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm -ErrorAction SilentlyContinue
if ($tpm) {
Write-Host "TPM Present: Yes"
Write-Host "TPM Version: $($tpm.SpecVersion)"
Write-Host "TPM Manufacturer: $($tpm.ManufacturerID)"
} else {
Write-Host "TPM Present: No"
}
# BATTERY
Write-Host "`n=== BATTERY ===" -ForegroundColor Cyan
$batteries = Get-CimInstance Win32_Battery -ErrorAction SilentlyContinue
if ($batteries) {
foreach ($bat in $batteries) {
$status = switch ($bat.BatteryStatus) {
1 {"Discharging"}
2 {"Charging"}
3 {"Fully Charged"}
4 {"Low"}
5 {"Critical"}
6 {"Charging and High"}
7 {"Charging and Low"}
8 {"Charging and Critical"}
9 {"Undefined"}
10 {"Partially Charged"}
default {"Unknown"}
}
$chem = switch ($bat.Chemistry) {
1 {"Other"}
2 {"Unknown"}
3 {"Lead Acid"}
4 {"Nickel Cadmium"}
5 {"Nickel Metal Hydride"}
6 {"Lithium-ion"}
7 {"Zinc air"}
8 {"Lithium Polymer"}
default {"Unknown"}
}
Write-Host "Name: $($bat.Name)"
Write-Host "Chemistry: $chem"
Write-Host "Status: $status"
Write-Host "Design Capacity: $(if ($bat.DesignCapacity) { $bat.DesignCapacity } else { 'N/A' }) mWh"
Write-Host "Full Charge Capacity: $(if ($bat.FullChargeCapacity) { $bat.FullChargeCapacity } else { 'N/A' }) mWh"
Write-Host "Cycle Count: $(if ($bat.CycleCount) { $bat.CycleCount } else { 'N/A' })"
Write-Host "Charge Remaining: $(if ($bat.EstimatedChargeRemaining) { $bat.EstimatedChargeRemaining } else { 'N/A' }) %"
}
} else {
Write-Host "No battery detected"
}
# DISKS
Write-Host "`n=== DISKS ===" -ForegroundColor Cyan
$disks = Get-CimInstance Win32_DiskDrive
foreach ($disk in $disks) {
$sizeGB = if ($disk.Size) { [math]::Round($disk.Size / 1GB, 2) } else { 0 }
Write-Host "Drive Model: $($disk.Model)"
Write-Host "Interface: $($disk.InterfaceType)"
Write-Host "Size: $sizeGB GB"
}
Write-Host "`n=== END OF REPORT ===" -ForegroundColor Cyan
# Vygeneruje detailný battery report do Tools
$BatteryReportPath = "C:\Tools\battery_report.html"
powercfg /batteryreport /output $BatteryReportPath
Write-Host "`nBattery report generated at: $BatteryReportPath" -ForegroundColor Cyan
Read-Host "Press Enter to continue..."
Teraz ho uložíme
Aby sa nam skript dal spustiť, tak musíme prepísať príponu z txt na ps1
Vo Windows 11 klikneme na View

Potom na Show a File name extensions

Zobrazia sa nám prípony

TXT nahradíme txz na ps1

Spúštanie skriptu
Ako prvé musíme spustiť PowerShell, ako admin
Zadáme príkaz, aby sa skript mohol spúšťať.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

A spustíme skript
& "C:\Tools\system_info.ps1"
A potom zistíte, že v priečinku sa nachádza ďaľší súbor v html battery_report.html

