Wiki di Michele

Informazioni sul sistema

GuidaUltima modifica: 24/10/2026 Verificata il 24/10/2026

Raccogliere dati su hardware, sistema operativo, dischi e aggiornamenti con PowerShell. I cmdlet CIM sostituiscono wmic, ormai deprecato.

Sistema operativo e computer

Get-ComputerInfo
Get-ComputerInfo | Select-Object CsName, OsName, OsVersion, OsBuildNumber, OsArchitecture, CsManufacturer, CsModel, BiosSeralNumber
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber, InstallDate, LastBootUpTime
Get-CimInstance Win32_ComputerSystem | Select-Object Name, Manufacturer, Model, TotalPhysicalMemory, Domain
(Get-CimInstance Win32_BIOS).SerialNumber
hostname
$env:COMPUTERNAME

Get-ComputerInfo è completo ma lento; per script veloci usa Get-CimInstance.

Tempo di attività:

(Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime

Processore e memoria

Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed
Get-CimInstance Win32_PhysicalMemory | Select-Object BankLabel, Capacity, Speed, Manufacturer
[math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1GB, 1)
Get-CimInstance Win32_OperatingSystem | Select-Object @{n='LiberaGB';e={[math]::Round($_.FreePhysicalMemory/1MB,1)}}

Dischi e volumi

Get-Disk
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, Size, HealthStatus
Get-Partition
Get-Volume
Get-Volume | Select-Object DriveLetter, FileSystemLabel, FileSystem, @{n='Libero(GB)';e={[math]::Round($_.SizeRemaining/1GB,1)}}, @{n='Totale(GB)';e={[math]::Round($_.Size/1GB,1)}}
Get-PSDrive -PSProvider FileSystem

Operazioni distruttive (usa con estrema cautela):

Clear-Disk -Number 2 -RemoveData
Format-Volume -DriveLetter E -FileSystem NTFS -NewFileSystemLabel "Dati"

Scheda video, schede di rete, periferiche

Get-CimInstance Win32_VideoController | Select-Object Name, DriverVersion, AdapterRAM
Get-NetAdapter
Get-PnpDevice -PresentOnly | Where-Object Status -ne OK
Get-CimInstance Win32_Battery | Select-Object EstimatedChargeRemaining, BatteryStatus
Get-CimInstance Win32_BaseBoard | Select-Object Manufacturer, Product

Get-PnpDevice con stato diverso da OK aiuta a trovare periferiche con problemi.

Software installato

Get-CimInstance Win32_Product
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher | Sort-Object DisplayName
Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion
Get-AppxPackage | Select-Object Name, Version
winget list

Win32_Product è lento e può avviare la riparazione degli installer MSI: preferisci la lettura del registro.

Aggiornamenti installati

Get-HotFix
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 10
Get-HotFix -Id KB5034441

Utenti connessi

quser
Get-CimInstance Win32_ComputerSystem | Select-Object UserName
Get-CimInstance Win32_LogonSession

Variabili d'ambiente

Get-ChildItem Env:
$env:PATH -split ";"
$env:USERNAME
[Environment]::SetEnvironmentVariable("MIAVAR","valore","User")
[Environment]::SetEnvironmentVariable("MIAVAR","valore","Machine")

La modifica con [Environment]:: è permanente; $env:MIAVAR = ... vale solo per la sessione.

Licenza e attivazione

Get-CimInstance SoftwareLicensingProduct | Where-Object { $_.PartialProductKey } | Select-Object Name, LicenseStatus
cscript //nologo C:\Windows\System32\slmgr.vbs /xpr

Temperatura, stato disco e SMART

Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object DeviceId, Temperature, Wear, ReadErrorsTotal, PowerOnHours

Non tutti i dischi espongono questi dati.

Report completo su più computer

$computer = "PC01","PC02","PC03"
Get-CimInstance Win32_OperatingSystem -ComputerName $computer | Select-Object PSComputerName, Caption, Version, LastBootUpTime

Per CIM remoto con sessione: New-CimSession -ComputerName PC01.

[pscustomobject]@{
    Computer = $env:COMPUTERNAME
    SO = (Get-CimInstance Win32_OperatingSystem).Caption
    RAM_GB = [math]::Round((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory/1GB)
    CPU = (Get-CimInstance Win32_Processor).Name
    Seriale = (Get-CimInstance Win32_BIOS).SerialNumber
} | Export-Csv .\inventario.csv -NoTypeInformation -Encoding UTF8 -Append

Tag

comandipowershellwindows

Altre pubblicazioni in questa sezione

Suggerisci una correzione