在 Windows 11 和更新的版本(如 Windows Server 2025)中,wmic 命令已经被弃用,取而代之的是 PowerShell 提供的更强大的命令和模块。您可以通过 PowerShell 获取有关内存的详细信息,包括每条内存条的容量、总内存以及最大支持内存。
在 Windows 11 和更新的版本(如 Windows Server 2025)中,wmic 命令已经被弃用,取而代之的是 PowerShell 提供的更强大的命令和模块。您可以通过 PowerShell 获取有关内存的详细信息,包括每条内存条的容量、总内存以及最大支持内存。
使用 PowerShell 查询内存信息的替代方法:
1. 查询总物理内存(Total Physical Memory)
您可以使用 Get-ComputerInfo 或 Get-WmiObject 查询总内存(物理内存)。
(Get-ComputerInfo).TotalPhysicalMemory
使用
|
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory
这里的 TotalVisibleMemorySize 是操作系统可以访问的总物理内存(单位:KB),FreePhysicalMemory 是当前系统空闲的物理内存(单位:KB)。
2. 查询每条内存条的容量和其他信息
通过 Get-WmiObject 查询每条内存条的详细信息,如容量、速度等:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, Capacity, Speed, MemoryType, SerialNumber
Manufacturer:内存条的制造商。Capacity:内存条的容量(以字节为单位)。Speed:内存条的速度(以 MHz 为单位)。MemoryType:内存类型(如 DDR4)。SerialNumber:内存条的序列号。
注意: Capacity 返回的单位是字节(Bytes),可以将它转换为 GB 以便更易读。以下是将字节转换为 GB 的示例代码:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, @{Name="CapacityGB";Expression={[math]::round($_.Capacity / 1GB, 2)}}, Speed, MemoryType
3. 查询操作系统最大支持的内存(最大物理内存)
Windows 操作系统并不总是直接提供最大支持内存的详细信息,但您可以通过以下方式查询系统的内存类型和版本,推测其支持的最大内存:
(Get-WmiObject -Class Win32_ComputerSystem).MaxMemory
如果该命令返回为空,可能是由于该系统信息未填充,您可以查看硬件文档或使用其他系统监控工具(如 CPU-Z)来获取最大支持内存的具体数值。
4. 查询虚拟内存大小
如果您还想查看虚拟内存(分页文件)相关信息,可以使用以下命令:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVirtualMemorySize, FreeVirtualMemory
TotalVirtualMemorySize 是虚拟内存的总大小,FreeVirtualMemory 是当前可用的虚拟内存(单位:KB)。
5. 查看系统内存使用情况
要查看系统的内存使用情况,您可以使用 Get-Counter 来获取更实时的内存性能数据:
Get-Counter -Counter '\Memory\Available Bytes'
该命令将返回可用内存的字节数。要查看更多内存相关的性能指标,可以使用:
Get-Counter -Counter '\Memory\*'
示例:查询内存总览
如果您想要一个综合的内存查询结果,包括物理内存、每条内存条的详细信息以及操作系统的虚拟内存信息,您可以使用以下脚本:
$memoryInfo = Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, @{Name="CapacityGB";Expression={[math]::round($_.Capacity / 1GB, 2)}}, Speed, MemoryType
$osInfo = Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
$computerSystem = Get-WmiObject -Class Win32_ComputerSystem | Select-Object TotalPhysicalMemory, MaxMemory
# 输出结果
$memoryInfo
$osInfo
$computerSystem
此脚本会显示每条内存条的容量、操作系统的物理和虚拟内存信息,以及计算机系统的总内存和最大内存支持信息。
结论:
wmic 被弃用后,PowerShell 提供了许多强大且灵活的命令来查询内存信息。通过 Get-WmiObject 和 Get-ComputerInfo 等命令,您可以全面了解系统的内存配置、每条内存条的详情及操作系统的内存状态。如果您需要进一步查询硬件限制或最大支持内存,建议查阅主板或系统的官方文档。
PowerShell 还提供了许多其他有用的命令来获取系统内存相关的信息。以下是一些常见的命令和技巧,它们可以帮助您更全面地了解内存使用情况和硬件信息:
1. 查看操作系统内存使用情况(详细)
通过 Get-WmiObject 查询操作系统内存的详细信息:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory, PageFileUsage, WorkingSetSize
PageFileUsage: 当前使用的分页文件大小(虚拟内存使用情况)。WorkingSetSize: 系统的当前工作集大小(实际使用的内存)。
2. 查看当前进程的内存使用情况
可以查看每个进程的内存使用情况(如已使用内存):
Get-WmiObject -Class Win32_Process | Select-Object Name, ProcessId, WorkingSetSize | Sort-Object WorkingSetSize -Descending
Name: 进程名ProcessId: 进程 IDWorkingSetSize: 进程的内存占用(字节数)
3. 查看内存使用的分页文件(Virtual Memory)统计
分页文件(虚拟内存)是操作系统将一部分内存内容移到磁盘的区域,您可以通过以下命令来查看它的使用情况:
Get-WmiObject -Class Win32_PageFileUsage | Select-Object Name, CurrentUsage, AllocatedBaseSize, Status
CurrentUsage: 当前分页文件的使用量(字节)。AllocatedBaseSize: 分配的分页文件大小(字节)。Status: 分页文件的状态。
4. 查看物理内存的详细信息(包括内存条数量)
如果您需要查看内存条的详细信息,例如总内存数量和每条内存的容量,可以使用:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, Capacity, Speed, MemoryType, SerialNumber, PartNumber, BankLabel
PartNumber: 内存条的型号。BankLabel: 内存插槽的标识标签。
如果需要将内存容量显示为 GB,可以像之前那样进行转换:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, @{Name="CapacityGB";Expression={[math]::round($_.Capacity / 1GB, 2)}}, Speed, MemoryType
5. 查看总的内存和 CPU 使用情况(性能计数器)
通过 Get-Counter 命令可以实时查看系统的内存和 CPU 性能计数。以下是查询内存和 CPU 性能的常用命令:
# 查看当前可用内存
Get-Counter -Counter '\Memory\Available Bytes'
# 查看总内存使用情况
Get-Counter -Counter '\Memory\Committed Bytes'
# 查看当前系统的 CPU 使用情况
Get-Counter -Counter '\Processor(_Total)\% Processor Time'
# 查看内存的更多性能指标
Get-Counter -Counter '\Memory\*'
6. 查询系统总内存(包括物理内存和虚拟内存)
可以通过以下命令来查询系统总内存(包括物理内存和虚拟内存的合计):
(Get-WmiObject -Class Win32_ComputerSystem).TotalPhysicalMemory
(Get-WmiObject -Class Win32_OperatingSystem).TotalVirtualMemorySize
7. 获取内存条的错误信息(如ECC)
一些内存条可能会支持错误检测和纠正(ECC),如果系统支持并启用了 ECC,您可以查询到内存条的相关信息:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, Capacity, Speed, MemoryType, SerialNumber, ErrorMethod
ErrorMethod: 错误方法(如果内存条支持 ECC,会显示相关信息)。
8. 检查内存管理设置
可以查看当前内存管理的相关设置,如分页文件设置:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object PagingFileName, MaxNumberOfProcesses, NumberOfProcesses
PagingFileName: 分页文件的路径。MaxNumberOfProcesses: 最大允许的进程数。NumberOfProcesses: 当前正在运行的进程数。
9. 查看系统内存的总数和使用情况
通过以下命令可以查看系统的物理内存和虚拟内存的详细信息:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
10. 查看每个进程的虚拟内存使用情况
Get-WmiObject -Class Win32_Process | Select-Object Name, ProcessId, VirtualSize | Sort-Object VirtualSize -Descending
VirtualSize: 进程使用的虚拟内存量(字节)。
总结
PowerShell 提供了非常强大的工具和命令,可以帮助您深入了解操作系统和硬件的内存状态。
检查系统物理内存
如果您只是想了解系统当前的物理内存,可以使用以下命令:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Capacity, Manufacturer, Speed
这将列出每条物理内存条的信息,包括其容量和速度。
-
查看虚拟内存(Virtual Memory): 如果您还想查看虚拟内存的大小,可以使用以下命令:
powershellCopy CodeGet-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVirtualMemorySize
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Capacity
Capacity --------
Get-WmiObject -Class Win32_OperatingSystem 是 PowerShell 中用于获取操作系统相关信息的命令。你希望将这些信息按功能分类并表格化,下面是常见的字段信息及其功能分类:
| 功能分类 | 属性名称 | 说明 |
|---|---|---|
| 操作系统信息 | Caption | 操作系统的名称(如:Windows 10 Pro) |
| Version | 操作系统的版本号(如:10.0.18363) | |
| BuildNumber | 操作系统的内部构建版本号(如:18363) | |
| ProductType | 产品类型(如:Workstation, Server) | |
| OSArchitecture | 操作系统的架构类型(如:32-bit 或 64-bit) | |
| 安装信息 | InstallDate | 操作系统的安装日期 |
| 系统配置 | LastBootUpTime | 系统最后启动时间 |
| LocalDateTime | 当前本地时间 | |
| BootDevice | 启动设备(如:\Device\HarddiskVolume1) | |
| 内存和性能信息 | TotalVisibleMemorySize | 系统可用的总内存大小(字节) |
| FreePhysicalMemory | 系统可用的物理内存大小(字节) | |
| TotalVirtualMemorySize | 系统的虚拟内存总大小(字节) | |
| FreeVirtualMemory | 系统的可用虚拟内存大小(字节) | |
| 硬件信息 | SystemDrive | 系统分区所在的磁盘驱动器(如:C:) |
| NumberOfProcesses | 当前系统上运行的进程数量 | |
| NumberOfUsers | 当前系统登录的用户数量 | |
| ComputerName | 计算机的名称 | |
| 网络信息 | DNSDomain | DNS 域名 |
| Domain | 计算机所在的域名 | |
| NetworkAdapters | 网络适配器信息,通常是字符串数组,包含适配器的名字、IP等 |
示例:
可以在 PowerShell 中使用以下命令查看所有信息:
Get-WmiObject -Class Win32_OperatingSystem | Format-List *
或者,如果你只想查看某一类的特定信息,可以用如下命令:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, Version, TotalVisibleMemorySize, FreePhysicalMemory, LastBootUpTime
这将显示操作系统名称、版本、总内存、可用内存和最后启动时间等信息。
Get-ComputerInfo 是 PowerShell 中用于获取计算机系统详细信息的命令。它提供了计算机硬件、操作系统、网络、存储等多方面的详细信息。以下是将其输出按功能分类并表格化的结果:
| 功能分类 | 属性名称 | 说明 |
|---|---|---|
| 操作系统信息 | WindowsVersion | 操作系统版本号(如:10.0.18363) |
| WindowsBuildLabEx | 操作系统构建版本及信息 | |
| OsArchitecture | 操作系统的架构类型(如:x64) | |
| WindowsInstallDate | 操作系统安装日期 | |
| ProductType | 操作系统产品类型(如:Workstation, Server) | |
| 计算机硬件信息 | Manufacturer | 计算机制造商 |
| Model | 计算机型号 | |
| TotalPhysicalMemory | 总物理内存(字节) | |
| NumberOfProcessors | 处理器的数量 | |
| Processor | 处理器名称和描述 | |
| 存储信息 | TotalVirtualMemorySize | 总虚拟内存大小(字节) |
| FreePhysicalMemory | 可用物理内存(字节) | |
| AvailableVirtualMemory | 可用虚拟内存(字节) | |
| BootDevice | 启动设备名称 | |
| 网络信息 | Domain | 计算机所属的域名 |
| DNSHostName | DNS 主机名 | |
| NetworkAdapters | 网络适配器信息,通常包括网卡的名称、IP 地址等 | |
| 系统状态与配置 | SystemType | 系统类型(如:工作站、服务器等) |
| CsTotalPhysicalMemory | 计算机总物理内存(字节) | |
| CsProcessor | 处理器相关信息 | |
| CsNumberOfLogicalProcessors | 逻辑处理器数量 | |
| CsTotalPhysicalMemory | 计算机的总物理内存 | |
| 本地时间和时区 | CurrentTimeZone | 当前时区名称 |
| LocalDateTime | 当前本地时间 | |
| Uptime | 系统已运行时间 | |
| 安全和身份验证信息 | AccountDomain | 本地计算机所属的账户域 |
| RegisteredUser | 注册的用户 | |
| ProductName | 操作系统名称(如:Windows 10 Pro) |
示例:
在 PowerShell 中使用 Get-ComputerInfo 可以显示所有计算机相关信息:
Get-ComputerInfo
如果只需要查看某些特定信息,可以通过 Select-Object 进行筛选。例如,要查看计算机型号、操作系统版本、总内存和系统类型,可以使用以下命令:
Get-ComputerInfo | Select-Object Model, WindowsVersion, TotalPhysicalMemory, SystemType
进一步筛选:
如果你只关心内存和处理器信息,可以执行:
Get-ComputerInfo | Select-Object TotalPhysicalMemory, NumberOfProcessors, Processor
这样你就可以按自己的需求筛选所需的详细信息了。
在 PowerShell 中,Get-CimInstance 是一个强大的命令,可以用来查询各种系统信息。为了帮助你更好地理解如何使用 Get-CimInstance 按功能分类表格化不同的信息,下面我将提供一些常见的 CIM 类,并将它们按功能进行分类。这样你可以更清晰地了解如何使用 Get-CimInstance 来获取不同的系统资源信息。
按功能分类的 Get-CimInstance 示例:
1. 计算机系统和硬件信息
| 功能 | 类名 | 示例命令 |
|---|---|---|
| 计算机系统信息 | Win32_ComputerSystem |
Get-CimInstance -ClassName Win32_ComputerSystem |
| 计算机硬件信息 | Win32_ComputerSystemProduct |
Get-CimInstance -ClassName Win32_ComputerSystemProduct |
| 内存信息 | Win32_PhysicalMemory |
Get-CimInstance -ClassName Win32_PhysicalMemory |
| 存储适配器信息 | Win32_SCSIController |
Get-CimInstance -ClassName Win32_SCSIController |
| 电池信息 | Win32_Battery |
Get-CimInstance -ClassName Win32_Battery |
| 显卡信息 | Win32_VideoController |
Get-CimInstance -ClassName Win32_VideoController |
2. 处理器和核心信息
| 功能 | 类名 | 示例命令 |
|---|---|---|
| 处理器信息 | Win32_Processor |
Get-CimInstance -ClassName Win32_Processor |
| 处理器核心信息 | Win32_Processor(多个核心) |
`Get-CimInstance -ClassName Win32_Processor |
3. 网络和适配器信息
| 功能 | 类名 | 示例命令 |
|---|---|---|
| 网络适配器信息 | Win32_NetworkAdapter |
Get-CimInstance -ClassName Win32_NetworkAdapter |
| 网络接口信息 | Win32_NetworkAdapterConfiguration |
Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration |
| 网络协议信息 | Win32_NetworkProtocol |
Get-CimInstance -ClassName Win32_NetworkProtocol |
4. 磁盘和文件系统信息
| 功能 | 类名 | 示例命令 |
|---|---|---|
| 磁盘信息 | Win32_DiskDrive |
Get-CimInstance -ClassName Win32_DiskDrive |
| 分区信息 | Win32_DiskPartition |
Get-CimInstance -ClassName Win32_DiskPartition |
| 驱动器信息 | Win32_LogicalDisk |
Get-CimInstance -ClassName Win32_LogicalDisk |
5. 操作系统信息
| 功能 | 类名 | 示例命令 |
|---|---|---|
| 操作系统信息 | Win32_OperatingSystem |
Get-CimInstance -ClassName Win32_OperatingSystem |
| 操作系统补丁信息 | Win32_QuickFixEngineering |
Get-CimInstance -ClassName Win32_QuickFixEngineering |
6. 用户和账户信息
| 功能 | 类名 | 示例命令 |
|---|---|---|
| 用户信息 | Win32_UserAccount |
Get-CimInstance -ClassName Win32_UserAccount |
| 组信息 | Win32_Group |
Get-CimInstance -ClassName Win32_Group |
| 登录会话信息 | Win32_Session |
Get-CimInstance -ClassName Win32_Session |
7. 服务和进程信息
| 功能 | 类名 | 示例命令 |
|---|---|---|
| 服务信息 | Win32_Service |
Get-CimInstance -ClassName Win32_Service |
| 进程信息 | Win32_Process |
Get-CimInstance -ClassName Win32_Process |
8. 打印机和打印任务信息
| 功能 | 类名 | 示例命令 |
|---|---|---|
| 打印机信息 | Win32_Printer |
Get-CimInstance -ClassName Win32_Printer |
| 打印任务信息 | Win32_PrintJob |
Get-CimInstance -ClassName Win32_PrintJob |
示例:如何获取表格化信息
- 获取计算机系统信息(制造商、型号、内存等):
Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object Manufacturer, Model, TotalPhysicalMemory, NumberOfProcessors | Format-Table -AutoSize
- 获取处理器信息(名称、核心数、逻辑处理器数等):
Get-CimInstance -ClassName Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors | Format-Table -AutoSize
- 获取操作系统信息(操作系统名称、版本、架构等):
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object Caption, Version, OSArchitecture | Format-Table -AutoSize
- 获取磁盘驱动器信息(磁盘型号、容量、接口类型等):
Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model, Size, MediaType, InterfaceType | Format-Table -AutoSize
总结:
你可以使用 Get-CimInstance 来查询不同的系统组件信息,并通过 Select-Object 来选择你感兴趣的字段,最后使用 Format-Table -AutoSize 来表格化输出信息,方便阅读和分析。
Get-WmiObject 和 Get-CimInstance 都是 PowerShell 中用来查询系统信息的常用命令,二者在许多方面是相似的,但也有一些重要的区别。下面是 Get-WmiObject 和 Get-CimInstance 的比较,按照功能和性能等方面进行表格化总结。
Get-WmiObject vs Get-CimInstance 对比
| 特性 | Get-WmiObject | Get-CimInstance |
|---|---|---|
| 引入的版本 | PowerShell 2.0(较早版本) | PowerShell 3.0(较新版本) |
| 基础协议 | DCOM(Distributed Component Object Model) | CIM(Common Information Model,基于 WS-Man) |
| 性能 | 性能较差,尤其是在远程查询时 | 性能较优,支持更高效的网络通信协议(WS-Man) |
| 远程管理支持 | 支持远程管理(但不如 Get-CimInstance 高效) |
更好的远程支持,使用更现代的 WS-Man 协议 |
| 平台支持 | 只支持 Windows 操作系统 | 支持跨平台,适用于 Windows 和 Linux(通过 CIM) |
| 命令结构 | Get-WmiObject -Class <ClassName> |
Get-CimInstance -ClassName <ClassName> |
| 查询速度 | 查询速度较慢,尤其是在网络连接不稳定时 | 查询速度较快,使用更高效的协议 |
| 默认返回格式 | 直接返回 WMI 对象(较为复杂) | 返回 CIM 对象(可更好地与其他 PowerShell 命令配合) |
| 对象支持的属性 | 支持 WMI 类和属性 | 支持 CIM 类和属性,但有时支持的类和属性略有不同 |
| 兼容性 | 支持更广泛的旧版 Windows 操作系统 | 主要支持较新的 Windows 系统,特别是 Windows 8 及以上 |
| 获取的信息类别 | 可获取系统信息、硬件信息、网络信息、服务等 | 可获取系统信息、硬件信息、网络信息、服务等 |
| 错误处理 | 错误处理较为基础 | 错误处理更加灵活,支持更详细的错误信息 |
Get-WmiObject 和 Get-CimInstance 使用示例
| 命令功能 | Get-WmiObject 示例 | Get-CimInstance 示例 |
|---|---|---|
| 获取计算机系统信息 | Get-WmiObject -Class Win32_ComputerSystem |
Get-CimInstance -ClassName Win32_ComputerSystem |
| 获取操作系统信息 | Get-WmiObject -Class Win32_OperatingSystem |
Get-CimInstance -ClassName Win32_OperatingSystem |
| 获取处理器信息 | Get-WmiObject -Class Win32_Processor |
Get-CimInstance -ClassName Win32_Processor |
| 获取磁盘信息 | Get-WmiObject -Class Win32_DiskDrive |
Get-CimInstance -ClassName Win32_DiskDrive |
| 获取网络适配器信息 | Get-WmiObject -Class Win32_NetworkAdapter |
Get-CimInstance -ClassName Win32_NetworkAdapter |
| 获取打印机信息 | Get-WmiObject -Class Win32_Printer |
Get-CimInstance -ClassName Win32_Printer |
| 获取服务信息 | Get-WmiObject -Class Win32_Service |
Get-CimInstance -ClassName Win32_Service |
关键区别说明
-
协议:
Get-WmiObject使用 DCOM(Distributed Component Object Model),这是一个老旧的协议,需要较多的网络资源和权限配置,尤其是在远程管理时。Get-CimInstance使用 WS-Man(Web Services Management),这是一个更现代的协议,效率更高,并且支持更强的远程管理功能。
-
性能:
Get-WmiObject在某些场景下(尤其是远程查询)会有较高的延迟。Get-CimInstance性能更好,因为它使用的 WS-Man 协议更高效,尤其是在远程查询时。
-
跨平台支持:
Get-WmiObject只能在 Windows 系统上使用。Get-CimInstance支持跨平台,可以在 Windows 和 Linux 系统上工作。
-
远程管理:
Get-WmiObject虽然支持远程查询,但由于使用的 DCOM 协议,配置起来比较复杂,并且网络延迟较高。Get-CimInstance使用 WS-Man 协议,在远程查询时更高效且容易配置。
-
返回的数据类型:
Get-WmiObject返回的对象是 WMI 对象,这些对象可能包含一些额外的元数据,操作起来相对繁琐。Get-CimInstance返回的对象是 CIM 对象,这些对象更标准化,并且更容易与 PowerShell 中的其他命令进行交互。
总结
- 使用
Get-WmiObject:如果你需要兼容旧版本的 Windows 系统,或者你依赖于某些只在 WMI 中支持的类和属性,那么Get-WmiObject仍然是一个有效的选择。 - 使用
Get-CimInstance:如果你使用的是较新的操作系统,或者你希望提升性能和扩展性,特别是在远程管理和跨平台环境中,Get-CimInstance是更好的选择。
系统安装日期:有那些命令
PS C:\Users\Administrator> (Get-WmiObject -Class Win32_OperatingSystem).InstallDate
19700101080002.000000+480
PS C:\Users\Administrator> (Get-CimInstance -ClassName Win32_OperatingSystem).InstallDate
1970-01-01 星期四 上午:8:00:02
PS C:\Users\Administrator> systeminfo | Select-String "初始安装日期"
初始安装日期: 1970-01-01 星期四, 上午:8:00:02

浙公网安备 33010602011771号