public/Get-GPUInfo.ps1
|
function Get-GPUInfo { <# .SYNOPSIS Gets GPU adapter and driver information. .DESCRIPTION Returns GPU adapter data from lspci and, when available, NVIDIA runtime details. .EXAMPLE Get-GPUInfo Returns GPU adapter and driver information. .LINK https://github.com/Skatterbrainz/linuxtools/blob/master/docs/Get-GPUInfo.md #> [CmdletBinding()] param() try { $adapters = @() if (Get-Command -Name lspci -ErrorAction SilentlyContinue) { $lspciRows = lspci | Where-Object { $_ -match 'VGA|3D controller|Display controller' } foreach ($row in $lspciRows) { if ($row -match '^(?<Bus>[0-9a-fA-F:.]+)\s+(?<Class>.+?):\s+(?<Model>.+)$') { $adapters += [pscustomobject]@{ BusAddress = $matches['Bus'] Class = $matches['Class'] Model = $matches['Model'] } } } } $nvidia = $null if (Get-Command -Name nvidia-smi -ErrorAction SilentlyContinue) { $nvidia = nvidia-smi --query-gpu=name,driver_version,memory.total,memory.used,temperature.gpu --format=csv,noheader 2>$null | ForEach-Object { $parts = $_.Split(',') | ForEach-Object { $_.Trim() } if ($parts.Count -ge 5) { [pscustomobject]@{ Name = $parts[0] DriverVersion = $parts[1] MemoryTotal = $parts[2] MemoryUsed = $parts[3] Temperature = $parts[4] } } } } [pscustomobject]@{ Adapters = $adapters Nvidia = $nvidia } } catch { Write-Error $($_.Exception.Message -join(';')) } } |