Для получение информации о компьютере в Powershell, такой как CPU или температуре процессора есть два варианта. Первый способ вернет нам ограниченные данные по компьютеру, а второй, через WMI, вернет практически все, что есть в системе.
В первом варианту у нас отобразится большинство данных например таких, как процессор и оперативная память:
Get-ComputerInfo
Минус командлета в том, что он долго выполняется и имеет очень большой вывод. Мы можем отфильтровать свойства таким способом:
Get-ComputerInfo -Property *proc*,*mem*
Так я получил информацию по CPU в powershell и оперативной памяти.
Второй вариант это через WMI. О том как работать с wmi в powershell уже рассказывали, поэтому разбирать все в деталях не будем.
Получение информации об оперативной памяти в Powershell
Узнать информацию о памяти можно через отдельный класс "Win32_PhysicalMemory". Выполнив запрос к этому классу мы можем получить данные по серийному номеру, количестве планок, объем, частотность и многое другое. Запрос выполняется так:
Get-WmiObject -Class "Win32_PhysicalMemory"
Так как информации много мы захотим ее отфильтровать, а объем преобразовать в гигабайты. Я выбрал в качестве свойства PurtNumber, но их может быть сколько угодно из колонки слева ( на рисунке выше):
Get-WmiObject Win32_PhysicalMemory | fl PartNumber,@{Label="Capacity"; Expression={$_.Capacity / 1GB}}
Может мы хотим объединить все данные в один пункт, суммировав объем памяти. Это делается так:
Get-WmiObject Win32_PhysicalMemory | Measure-Object -Property capacity -Sum | Foreach {"{0:N2}" -f ([math]::round(($_.Sum / 1GB),2))}
Получение данных по CPU в Powershell
Информацию по процессорам мы можем получить используя класс "Win32_Processor":
Get-WmiObject -Class Win32_Processor | select *
Если мы хотим получить в powershell температуру процессора то нужно использовать другой класс "MSAcpi_ThermalZoneTemperature":
Get-WmiObject -Class MSAcpi_ThermalZoneTemperature -Namespace "root/wmi"
Так как результат отображается в Kelvin * 10 нам нужно преобразовать это в температуру по цельсию. Один из вариантов такой:
function Get-Temperature {
$t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi"
$returntemp = @()
foreach ($temp in $t.CurrentTemperature)
{
$cuTempKelvin = $temp / 10
$cuTempCelsius = $cuTempKelvin - 273.15
$returntemp += $cuTempCelsius.ToString() + " C "
}
return $returntemp
}
Get-Temperature
Можно в powershell узнать температуру процессора и так:
$result = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi" | select CurrentTemperature
$result | fl @{Label="Цельсий"; Expression={$_.CurrentTemperature / 10 - 273.15}}
Powershell - установка ролей и компонентов Windows
Получение информации по материнской плате в Powershell
За материнскую плату отвечает класс "Win32_BaseBoard". Так мы выедем всю возможную информацию:
Get-WmiObject -Class "Win32_BaseBoard"
...
Подписывайтесь на наш Telegram канал
Теги: #powershell