在管理和维护计算机系统时,获取计算机硬件信息是非常重要的。了解硬件配置可以帮助我们更好地了解系统的性能和可扩展性,识别问题并进行故障排除。当你想要获取计算机系统信息时,PowerShell 是一个强大的工具。在此,我们将介绍如何使用 PowerShell 获取计算机的 BIOS 版本、操作系统信息、CPU 型号、内存信息、显卡信息、磁盘驱动器信息和网络适配器信息。
首先,我们需要使用 Get-CimInstance
命令来替代过时的 Get-WmiObject
命令。这样可以提高代码的效率,并且 Get-CimInstance
是 PowerShell 中较新的命令。接下来,我们将逐个获取所需的系统信息,并将其保存在相应的变量中。
首先,我们使用以下代码获取计算机的 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
函数获取注册表中的版本号,并将其与操作系统名称拼接起来。
我们也可以使用 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、内存、显卡、硬盘和网络适配器的详细信息。
请注意,具体的输出结果将根据不同计算机的硬件配置而有所不同。以上只是一个示例,并不代表所有计算机的实际输出结果。
希望本篇博客对你有所帮助!如有任何问题,请随时提问。