【Win】使用 PowerShell 命令获取计算机硬件信息

在管理和维护计算机系统时,获取计算机硬件信息是非常重要的。了解硬件配置可以帮助我们更好地了解系统的性能和可扩展性,识别问题并进行故障排除。当你想要获取计算机系统信息时,PowerShell 是一个强大的工具。在此,我们将介绍如何使用 PowerShell 获取计算机的 BIOS 版本、操作系统信息、CPU 型号、内存信息、显卡信息、磁盘驱动器信息和网络适配器信息。

首先,我们需要使用 Get-CimInstance 命令来替代过时的 Get-WmiObject 命令。这样可以提高代码的效率,并且 Get-CimInstance 是 PowerShell 中较新的命令。接下来,我们将逐个获取所需的系统信息,并将其保存在相应的变量中。

获取 BIOS 版本

首先,我们使用以下代码获取计算机的 BIOS 版本号:

$BIOS_Version = (Get-CimInstance -ClassName Win32_BIOS).SMBIOSBIOSVersion.trim().toupper()

这行代码会调用 Get-CimInstance 命令并选择 Win32_BIOS 类,然后获取 SMBIOSBIOSVersion 属性的值,使用 trim() 函数去除空格,并将结果转换为大写。

获取操作系统信息

接下来,我们获取计算机的操作系统信息,包括名称和版本号:

$OS = (((Get-CimInstance -ClassName Win32_OperatingSystem).Caption).caption) + " (" + (Get-ItemPropertyValue -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name DisplayVersion) + ")"

这行代码将调用 Get-CimInstance 命令获取 Win32_OperatingSystem 类的实例,并选择 Caption 属性作为操作系统的名称。接着,我们使用 Get-ItemPropertyValue 函数获取注册表中的版本号,并将其与操作系统名称拼接起来。

获取 CPU 型号

我们也可以使用 PowerShell 获取计算机的 CPU 型号:

$CPU = (Get-CimInstance -ClassName Win32_Processor).Name.trim()

这行代码调用 Get-CimInstance 命令并选择 Win32_Processor 类,然后获取 Name 属性的值,并使用 trim() 函数去除空格。

获取内存信息

下面,我们获取计算机的内存信息,包括总容量和每个物理内存条的容量和速度:

$Memorys = Get-CimInstance -ClassName Win32_PhysicalMemory
$TotalMemory = 0
$Memory = foreach ($obj in $Memorys) {
    $TotalMemory += $obj.Capacity
    ($obj.Capacity/1GB).ToString() + " GB " + $obj.Speed + "MHz"
}
$Memory = ($TotalMemory/1GB).ToString() + " GB (" + ($Memory -join " / ") + ")"

首先,我们调用 Get-CimInstance 命令并选择 Win32_PhysicalMemory 类,将结果保存在 $Memorys 变量中。然后,我们使用循环遍历每个物理内存条并计算总内存容量。在循环中,我们使用每个物理内存条的容量和速度来构建一个数组 $Memory。最后,我们将总内存容量和内存条的信息进行拼接。

获取显卡信息

在 PowerShell 中,我们也可以获取计算机的显卡信息:

$Displays = Get-CimInstance -ClassName Win32_VideoController

$Display = foreach ($controller in $Displays) {
    $controller.Name
}

$Display = ($Display -join " / ")

此代码会先调用Get-CimInstance命令来获取Win32_VideoController类的实例,并将结果保存在$Displays变量中。然后,我们使用循环遍历每个视频控制器,并将其名称添加到$Display数组中。最后,通过将$Display数组中的所有元素拼接起来,我们就可以得到一个包含所有显卡名称的字符串。

获取磁盘驱动器信息

接下来,我们获取计算机的磁盘驱动器信息,包括驱动器标签和容量:

$Disks = Get-CimInstance -ClassName Win32_DiskDrive | Where-Object { $_.MediaType -eq 'Fixed hard disk media' } | Sort-Object -Property Index
$HD = foreach ($disk in $Disks) {
    $disk.Caption + " (" + [Math]::Round($disk.Size/1GB) + " GB )"
}
$HD = ($HD -join " / ")

此代码会先调用 Get-CimInstance 命令并选择 Win32_DiskDrive 类,然后根据 MediaType 属性筛选出固定硬盘驱动器。然后,我们使用 Sort-Object 命令按照 Index 属性对驱动器进行排序。在循环中,我们获取每个磁盘驱动器的标签和大小,并将其添加到 $HD 数组中。最后,我们将所有的磁盘驱动器信息进行拼接。

获取网络适配器信息

最后,我们获取计算机的网络适配器信息,包括适配器名称和 MAC 地址:

$Adapters = Get-CimInstance -ClassName Win32_NetworkAdapter -Filter "PNPDeviceID LIKE 'PCI%'"
$NT = foreach ($adapter in $Adapters) {
    $adapter.Name + " (" + $adapter.MACAddress + ")"
}
$NT = ($NT -join " / ")

这段代码会调用 Get-CimInstance 命令并选择 Win32_NetworkAdapter 类,并使用过滤器来筛选出 PCI 类型的适配器。然后,我们使用循环遍历每个适配器,并将适配器的名称和 MAC 地址进行拼接,放入 $NT 数组中。最后,我们将所有的网络适配器信息进行拼接。

最终输出结果将如下所示:

BIOS 版本: 1.15.0
操作系统: Microsoft Windows 11 企业版 (22H2)
CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
内存: 32 GB (16 GB 3200MHz / 16 GB 3200MHz)
显卡: NVIDIA GeForce RTX 3050 Ti Laptop GPU / Intel(R) UHD Graphics
硬盘: NVMe Fanxiang S690 2TB (1863 GB) / NVMe KBG40ZNS1T02 NVMe KIOXIA 1024GB (954 GB)
网络适配器: Intel(R) Wi-Fi 6 AX201 160MHz (7C:**:**:**:**:B5)  #此处隐藏了MAC地址具体信息

这个输出结果示例包含了您提供的硬件信息,其中包括了 BIOS 版本、操作系统、CPU、内存、显卡、硬盘和网络适配器的详细信息。

请注意,具体的输出结果将根据不同计算机的硬件配置而有所不同。以上只是一个示例,并不代表所有计算机的实际输出结果。

希望本篇博客对你有所帮助!如有任何问题,请随时提问。

你可能感兴趣的:(Windows,windows,运维,microsoft)