PowerShell 中,你可以使用以下命令来查看你的计算机内存和当前内存的配置情况;一些额外的 PowerShell 命令,帮助你进一步查询和分析系统的内存使用情况:通过这些命令,你可以深入了解系统内存的使用情况,帮助优化性能或诊断问题。通过这些命令,你可以更细致地分析系统内存的使用情况,帮助排查性能问题或者优化资源分配。
使用 WMI - PowerShell | Microsoft Learn
Get-WmiObject | Microsoft Learn






一、完整脚本提取与语法说明
可直接复制完整代码
Get-CimInstance Win32_OperatingSystem | Select-Object `
@{Name="总物理内存(GB)";Expression={[math]::Round($_.TotalVisibleMemorySize / 1MB,2)}},
@{Name="空闲物理内存(GB)";Expression={[math]::Round($_.FreePhysicalMemory / 1MB,2)}},
@{Name="内存占用率(%)";Expression={[math]::Round((1 - $_.FreePhysicalMemory/$_.TotalVisibleMemorySize)*100,1)}},
@{Name="总虚拟内存(GB)";Expression={[math]::Round($_.TotalVirtualMemorySize / 1MB,2)}},
@{Name="空闲虚拟内存(GB)";Expression={[math]::Round($_.FreeVirtualMemory / 1MB,2)}}
核心语法要点
Get-CimInstance:新版 CIM WMI 接口,替代老旧Get-WmiObject,性能、兼容性、安全性更优,Win10/Server 2016 及以上原生支持。- 计算属性
@{Name;Expression}:自定义输出列名,完成单位换算与占用率运算。- 原始字段单位为 KB,除以
1MB(等价1024*1024)转换为 GB; [math]::Round(数值,小数位数)四舍五入格式化输出。
- 原始字段单位为 KB,除以
- 换行符
`:PowerShell 续行标记,拆分长命令便于阅读。
二、当前内存数据解读
| 指标 | 数值 | 详细说明 |
|---|---|---|
| 总物理内存 (GB) | 31.83 | 硬件搭载 32GB 内存,主板 / 系统硬件预留占用少量寻址空间 |
| 空闲物理内存 (GB) | 23.41 | 当前未被进程、缓存占用的物理内存 |
| 内存占用率 (%) | 26.5 | 整机物理内存负载仅 26.5%,资源极度充裕 |
| 总虚拟内存 (GB) | 36.58 | 物理内存 (31.83GB)+ 系统分页文件 (约 4.75GB) 总和 |
| 空闲虚拟内存 (GB) | 28.53 | 空闲物理内存 + 分页文件剩余可用容量 |
衍生计算
- 已占用物理内存:
31.83 - 23.41 = 8.42GB - 虚拟内存已占用:
36.58 - 28.53 = 8.05GB
三、脚本优化拓展方案
1. 输出为竖排键值对(和图中输出样式一致)
Format-List实现分行展示:Get-CimInstance Win32_OperatingSystem | Select-Object `
@{Name="总物理内存(GB)";Expression={[math]::Round($_.TotalVisibleMemorySize / 1MB,2)}},
@{Name="空闲物理内存(GB)";Expression={[math]::Round($_.FreePhysicalMemory / 1MB,2)}},
@{Name="内存占用率(%)";Expression={[math]::Round((1 - $_.FreePhysicalMemory/$_.TotalVisibleMemorySize)*100,1)}},
@{Name="总虚拟内存(GB)";Expression={[math]::Round($_.TotalVirtualMemorySize / 1MB,2)}},
@{Name="空闲虚拟内存(GB)";Expression={[math]::Round($_.FreeVirtualMemory / 1MB,2)}} | Format-List
2. 批量巡检多台远程主机内存
-ComputerName参数读取远程设备:$hostList = "PC01","PC02","192.168.1.100"
Get-CimInstance Win32_OperatingSystem -ComputerName $hostList | Select-Object `
PSComputerName,
@{Name="总物理内存(GB)";Expression={[math]::Round($_.TotalVisibleMemorySize / 1MB,2)}},
@{Name="内存占用率(%)";Expression={[math]::Round((1 - $_.FreePhysicalMemory/$_.TotalVisibleMemorySize)*100,1)}}
3. 查看内存条硬件详情(容量 / 频率 / 厂商)
Get-CimInstance Win32_PhysicalMemory | Select-Object Manufacturer,@{Name="单条容量GB";Expression={$_.Capacity/1GB}},Speed,DeviceLocator
四、系统状态总结 💡
- 负载健康:32GB 物理内存仅 26.5% 占用,可流畅运行大型程序、虚拟机、渲染任务,无内存瓶颈;
- 分页文件配置合理:虚拟内存仅比物理内存多出约 4.75GB,不会过度占用硬盘存储空间;
- 脚本优势:CIM 接口稳定无兼容告警,内置占用率计算,输出中文可读单位,适合运维日常巡检、服务器监控。

一、脚本完整解析
1. 完整可复制代码
Get-WmiObject Win32_OperatingSystem | Select-Object `
@{Name="总物理内存(GB)";Expression={[math]::Round($_.TotalVisibleMemorySize / 1MB,2)}},
@{Name="空闲物理内存(GB)";Expression={[math]::Round($_.FreePhysicalMemory / 1MB,2)}},
@{Name="总虚拟内存(GB)";Expression={[math]::Round($_.TotalVirtualMemorySize / 1MB,2)}},
@{Name="空闲虚拟内存(GB)";Expression={[math]::Round($_.FreeVirtualMemory / 1MB,2)}}
2. 核心语法拆解
Get-WmiObject Win32_OperatingSystem读取 WMI 操作系统类,获取内存原始数值(单位 KB)。Select-Object + 计算属性@{Name;Expression}自定义输出列名,将原始 KB 数值换算为 GB 并保留 2 位小数:1MB在 PowerShell 中等价于1024*1024,刚好完成 KB → GB 换算[math]::Round(数值,2)四舍五入保留 2 位小数,输出更直观
- 反引号
`:PowerShell 换行续行符,用于拆分长命令提升可读性
二、当前内存数据解读
| 指标 | 数值 | 说明 |
|---|---|---|
| 总物理内存 (GB) | 31.83 | 系统可识别的物理内存,硬件安装应为 32GB(系统预留占用少量空间) |
| 空闲物理内存 (GB) | 23.65 | 当前未被程序占用的物理内存 |
| 总虚拟内存 (GB) | 36.58 | 物理内存 (31.83GB)+ 系统分页文件 (约 4.75GB) 总和 |
| 空闲虚拟内存 (GB) | 28.75 | 物理空闲 + 分页文件剩余可用容量 |
占用计算
- 已使用物理内存:31.83 - 23.65 = 8.18GB
- 物理内存空闲率:23.65 ÷ 31.83 ≈ 74.3%
- 虚拟内存总占用:36.58 - 28.75 = 7.83GB
三、脚本优化与替代方案
方案 1:CIM 替代 WMI(推荐,Win10/11 原生支持,性能更好)
Get-WmiObject 为旧版 WMI 接口,微软推荐使用 Get-CimInstance:Get-CimInstance Win32_OperatingSystem | Select-Object `
@{Name="总物理内存(GB)";Expression={[math]::Round($_.TotalVisibleMemorySize / 1MB,2)}},
@{Name="空闲物理内存(GB)";Expression={[math]::Round($_.FreePhysicalMemory / 1MB,2)}},
@{Name="总虚拟内存(GB)";Expression={[math]::Round($_.TotalVirtualMemorySize / 1MB,2)}},
@{Name="空闲虚拟内存(GB)";Expression={[math]::Round($_.FreeVirtualMemory / 1MB,2)}}
方案 2:增加内存占用率显示
Get-CimInstance Win32_OperatingSystem | Select-Object `
@{Name="总物理内存(GB)";Expression={[math]::Round($_.TotalVisibleMemorySize / 1MB,2)}},
@{Name="空闲物理内存(GB)";Expression={[math]::Round($_.FreePhysicalMemory / 1MB,2)}},
@{Name="内存占用率(%)";Expression={[math]::Round((1 - $_.FreePhysicalMemory/$_.TotalVisibleMemorySize)*100,1)}},
@{Name="总虚拟内存(GB)";Expression={[math]::Round($_.TotalVirtualMemorySize / 1MB,2)}},
@{Name="空闲虚拟内存(GB)";Expression={[math]::Round($_.FreeVirtualMemory / 1MB,2)}}
方案 3:查看硬件内存条信息(扩展)
Win32_PhysicalMemory:Get-CimInstance Win32_PhysicalMemory | Select-Object Manufacturer,Capacity,DeviceLocator,Speed
四、系统状态总结 💡
- 内存资源十分充裕:32GB 物理内存仅占用约 8.18GB,空闲率 74.3%,多开大型软件、虚拟机均无内存瓶颈;
- 分页文件配置合理:虚拟内存仅比物理内存多出约 4.75GB,不会过度占用硬盘;
- 脚本优势:直接输出人类可读的 GB 单位,无需手动换算,适合批量巡检服务器 / 工作站内存状态。

一、提取图片完整 PowerShell 命令
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
字段对应输出数值(单位:KB)
| 字段名称 | 数值 (KB) | 含义 |
|---|---|---|
| TotalVisibleMemorySize | 33377112 | 系统可用物理内存总大小 |
| FreePhysicalMemory | 24987432 | 当前空闲物理内存 |
| TotalVirtualMemorySize | 38357848 | 虚拟内存(物理内存 + 分页文件)总容量 |
| FreeVirtualMemory | 30286748 | 当前空闲虚拟内存 |
二、数值换算(KB → GB,1GB = 1024*1024 KB)
- 总物理内存:33377112 KB ≈ 31.83 GB
- 空闲物理内存:24987432 KB ≈ 23.83 GB
- 总虚拟内存:38357848 KB ≈ 36.58 GB
- 空闲虚拟内存:30286748 KB ≈ 28.88 GB
内存占用计算
- 已占用物理内存:31.83 - 23.83 = 8.00 GB
- 已占用虚拟内存:36.58 - 28.88 = 7.70 GB
三、命令说明与拓展优化
1. 命令作用
2. 优化版(直接输出 GB,更易读)
Get-WmiObject Win32_OperatingSystem | Select-Object `
@{Name="总物理内存(GB)";Expression={[math]::Round($_.TotalVisibleMemorySize / 1MB,2)}},
@{Name="空闲物理内存(GB)";Expression={[math]::Round($_.FreePhysicalMemory / 1MB,2)}},
@{Name="总虚拟内存(GB)";Expression={[math]::Round($_.TotalVirtualMemorySize / 1MB,2)}},
@{Name="空闲虚拟内存(GB)";Expression={[math]::Round($_.FreeVirtualMemory / 1MB,2)}}
3. 补充知识点
TotalVisibleMemorySize:识别为系统可用的物理内存,小于等于硬件实际安装内存(受 32 位系统、硬件预留、虚拟化限制)。VirtualMemory= 物理内存 + 页面交换文件(分页文件),用于内存溢出时数据缓存。- 若使用 PowerShell 5.1 以上,推荐替换为
Get-CimInstance(CIM 接口,性能优于 WMI):
Get-CimInstance Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
四、当前主机内存状态总结
Win32_PhysicalMemory类)。
命令完整底层解构:Get-WmiObject 查询内存指标
一、完整命令还原
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
输出数值(单位:KB)
| 字段 | 原始数值 (KB) | 换算后容量 |
|---|---|---|
| TotalVisibleMemorySize | 4105124 | ~4GB 物理内存(系统可见 RAM) |
| FreePhysicalMemory | 798500 | ~779MB 空闲物理内存 |
| TotalVirtualMemorySize | 9721756 | ~9.27GB 总虚拟内存 (RAM + 页面文件) |
| FreeVirtualMemory | 4497044 | ~4.29GB 空闲虚拟内存 |
二、分层底层拆解(PowerShell → WMI → 内核内存管理器)
1. 顶层:Get-WmiObject 执行链路(PowerShell 层)
1.1 命令底层依赖
Get-WmiObject 是传统 WMI 访问 Cmdlet,内部封装 COM 接口 IWbemLocator / IWbemServices:- PowerShell 加载
System.Management.NET 程序集; - 调用
IWbemLocator::ConnectServer()连接本地root\cimv2WMI 命名空间; - 下发 WQL 查询:
SELECT TotalVisibleMemorySize,FreePhysicalMemory,TotalVirtualMemorySize,FreeVirtualMemory FROM Win32_OperatingSystem; - WMI 服务 (
winmgmt) 执行查询,返回 CIM 实例对象; - 管道传递给
Select-Object,仅保留指定 4 个内存属性,丢弃其余系统字段。
1.2 管道 Select-Object 底层行为
- 接收 WMI 返回的完整
Win32_OperatingSystem对象; - 内存过滤,仅提取 4 个内存相关属性,构建新 PS 自定义对象输出表格;
- 无额外系统调用,纯内存数据筛选。
2. 中间层:WMI 服务 winmgmt 与 Win32_OperatingSystem 类逻辑
2.1 WMI 服务定位
C:\Windows\System32\wbem\wmiprvse.exe(独立宿主进程隔离)2.2 Win32_OperatingSystem 内存字段数据来源
- WMI 提供器
Win32OSProvider.dll加载至 wmiprvse; - 内部调用原生 Win32 API:
GlobalMemoryStatusEx()(核心内存查询接口); - 读取
MEMORYSTATUSEX结构体,提取物理内存、虚拟内存、页面文件统计; - 将结构体字节值转换为 KB 单位(WMI 规范统一单位),封装为 WMI 属性对外暴露。
2.3 四个字段内核定义拆解
① TotalVisibleMemorySize
- 内核来源:
MEMORYSTATUSEX.ullTotalPhys - 含义:操作系统可寻址的全部物理内存(KB)
- 底层限制:32 位系统最大识别 4GB,预留硬件 PCI/BIOS 空间后数值低于 4194304KB;64 位完整识别全部 RAM;
- 区别:不等于内存条物理总容量,是内核可用可见内存,硬件预留会被扣除。
② FreePhysicalMemory
- 内核来源:
MEMORYSTATUSEX.ullAvailPhys - 含义:当前未被进程 / 内核占用的空闲物理内存(KB)
- 底层构成:Standby 待机页 + Free 空闲页 + Zero 零页内存总和;缓存 / 文件缓存不计入此值。
③ TotalVirtualMemorySize
- 内核来源:
MEMORYSTATUSEX.ullTotalVirtual - 含义:整机总虚拟地址空间大小(物理内存 RAM + 页面文件 pagefile.sys)
- 底层:系统最大可分配虚拟内存上限,由内存容量 + 页面文件大小共同决定。
④ FreeVirtualMemory
- 内核来源:
MEMORYSTATUSEX.ullAvailVirtual - 含义:未被进程占用的空闲虚拟内存(含空闲 RAM + 空闲页面文件区块)。
3. 内核层:GlobalMemoryStatusEx 与 Windows 内存管理器
3.1 API 内核调用链路
PowerShell(Get-WmiObject)
→ winmgmt(wmiprvse.exe)
→ Win32OSProvider.dll
→ User32.dll!GlobalMemoryStatusEx()
→ NtDll.dll!NtQuerySystemInformation
→ Windows 内核 ntoskrnl.exe 内存管理器 (Mm)
3.2 内核 Mm 内存管理器行为
- Mm 维护两套内存统计链表:
- 物理内存链表:记录所有物理页帧(4KB 一页),区分占用 / 空闲 / 待机 / 修改页;
- 虚拟内存链表:记录进程虚拟地址、页面文件映射区块;
- 收到 NtQuerySystemInformation 查询请求时,实时汇总统计数值,填充
MEMORYSTATUSEX结构体; - 所有统计为实时快照,无缓存,每次执行命令都会重新遍历内存页链表,数值实时变化。
3.3 单位转换底层规则
TotalVisibleMemorySize = ullTotalPhys / 1024
4. 关键底层补充:WMI vs Get-CimInstance 差异(新旧实现)
Get-WmiObject:老旧 WMI v1,基于 DCOM 远程传输,依赖winmgmt服务,性能偏低,微软标记为弃用;Get-CimInstance Win32_OperatingSystem:新一代 CIM cmdlet,基于 WMIv2/WS-Man,直接调用相同内存 API,但进程开销更小;等效现代替代命令:
Get-CimInstance Win32_OperatingSystem | Select TotalVisibleMemorySize,FreePhysicalMemory,TotalVirtualMemorySize,FreeVirtualMemory
5. 性能与权限底层约束
权限
- 普通用户、管理员均可执行;读取内存统计属于系统公开信息,无需 TrustedInstaller / 管理员高权限;
- 仅读取,无写入操作,不会修改内存、进程、页面文件。
性能开销
- 轻量系统调用:仅读取内核全局统计变量,不遍历所有进程;
- 瓶颈点:WMI 进程
wmiprvse.exeCOM 跨进程序列化对象,比直接调用GlobalMemoryStatusEx原生脚本开销高一点; - 高频轮询场景推荐:直接调用.NET
[System.Runtime.InteropServices.Marshal]::GlobalMemoryStatusEx()跳过 WMI 层,速度更快。
6. 与任务管理器内存数值差异底层原因
- 单位不同:WMI 输出 KB,任务管理器默认 GB/MB;
- 空闲内存统计口径:
FreePhysicalMemory仅纯空闲页;- 任务管理器 “可用内存”= Free + Standby 缓存页,数值会更大;
- 虚拟内存口径:任务管理器 “提交大小” 对应 WMI TotalVirtualMemory,逻辑一致。
7. 完整底层流程总时序
- PowerShell 初始化 WMI COM 客户端,连接本地 root\cimv2;
- 发送 WQL 查询请求至 winmgmt 服务;
- wmiprvse 加载 OS WMI 提供器;
- 提供器调用
GlobalMemoryStatusEx向 ntoskrnl 请求内存快照; - 内核 Mm 内存管理器汇总物理 / 虚拟内存统计,返回字节级数据;
- WMI 提供器除以 1024 转换为 KB,封装 WMI 对象;
- 对象回传给 PowerShell,管道 Select 过滤指定字段;
- 格式化表格输出至控制台。
补充:原生无 WMI 内存查询脚本(跳过 WMI 层,底层等价)
Add-Type @"
using System.Runtime.InteropServices;
public class MemStat {
[StructLayout(LayoutKind.Sequential)]
public struct MEMORYSTATUSEX {
public uint dwLength;
public uint dwMemoryLoad;
public ulong ullTotalPhys;
public ulong ullAvailPhys;
public ulong ullTotalPageFile;
public ulong ullAvailPageFile;
public ulong ullTotalVirtual;
public ulong ullAvailVirtual;
public ulong ullAvailExtendedVirtual;
}
[DllImport("user32.dll")]
public static extern bool GlobalMemoryStatusEx(ref MEMORYSTATUSEX lpBuffer);
}
"@
$mem = New-Object MemStat+MEMORYSTATUSEX
$mem.dwLength = [System.Runtime.InteropServices.Marshal]::SizeOf($mem)
[MemStat]::GlobalMemoryStatusEx([ref]$mem)
# 转换为KB(和WMI输出单位统一)
[PSCustomObject]@{
TotalVisibleMemorySize = $mem.ullTotalPhys / 1024
FreePhysicalMemory = $mem.ullAvailPhys / 1024
TotalVirtualMemorySize = $mem.ullTotalVirtual / 1024
FreeVirtualMemory = $mem.ullAvailVirtual / 1024
}
在 Windows 系统中,您可以使用 PowerShell 来查询内存相关的信息。以下是一些常用的 PowerShell 命令:
-
查询系统的总内存、已用内存、空闲内存等:
powershellGet-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory这条命令会显示以下信息:
TotalVisibleMemorySize:总物理内存FreePhysicalMemory:空闲物理内存TotalVirtualMemorySize:总虚拟内存FreeVirtualMemory:空闲虚拟内存
-
查看内存的详细信息:
powershellGet-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, Capacity, Speed, PartNumber这条命令会列出内存条的制造商、容量、速度以及部件号等详细信息。
-
查看内存使用率:
powershellGet-Counter -Counter "\Memory\% Committed Bytes In Use"这条命令会返回内存的使用百分比。
-
查询内存使用情况的简易图表:
powershellGet-Process | Select-Object Name, @{Name="Memory (MB)"; Expression={[math]::round($_.WorkingSet / 1MB, 2)}} | Sort-Object "Memory (MB)" -Descending这条命令会列出当前运行的进程以及它们各自占用的内存(以MB为单位),并按内存使用量排序。
一些补充的 PowerShell 命令,可以帮助你进一步查询内存相关的信息:
-
查看物理内存条的使用情况:
powershellGet-WmiObject -Class Win32_PhysicalMemory | Select-Object BankLabel, Capacity, Speed, Manufacturer这条命令将显示物理内存条的槽位标签(BankLabel)、容量、速度以及制造商。
-
查看内存分页文件的使用情况:
powershellGet-WmiObject -Class Win32_PageFileUsage | Select-Object AllocatedBaseSize, CurrentUsage, PeakUsage这条命令会返回分页文件的基准大小、当前使用量和峰值使用量。
-
查看系统总内存及每个进程的内存使用情况:
powershellGet-Process | Select-Object Name, @{Name="Memory (MB)"; Expression={[math]::round($_.PrivateMemorySize / 1MB, 2)}} | Sort-Object "Memory (MB)" -Descending此命令显示当前系统中所有进程的内存使用情况(以MB为单位),并按内存使用量降序排列。
-
查看物理内存的使用详情(包含更多信息,如内存状态等):
powershellGet-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, Capacity, Speed, MemoryType, FormFactor, Status这条命令会显示更多的物理内存信息,如内存类型、内存模块的形式因素(FormFactor)以及当前状态。
-
查询内存详细使用情况图表:
powershellGet-Counter "\Memory\Available MBytes"该命令返回当前可用的内存大小(MB)。
通过这些命令,你可以深入了解系统内存的使用情况,帮助优化性能或诊断问题。
一些额外的 PowerShell 命令,帮助你进一步查询和分析系统的内存使用情况:
- 查看操作系统内存使用的详细统计:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
该命令提供了操作系统的详细信息,包括总内存、可用内存、虚拟内存以及空闲内存。
- 查看每个进程的虚拟内存使用情况:
Get-Process | Select-Object Name, @{Name="Virtual Memory (MB)"; Expression={[math]::round($_.VirtualMemorySize / 1MB, 2)}} | Sort-Object "Virtual Memory (MB)" -Descending
这将列出所有进程及其虚拟内存使用情况,并按虚拟内存使用量进行排序。
- 查看系统的内存页交换情况(PagedPool 和 NonPagedPool):
Get-Counter "\Memory\Pool Paged Bytes", "\Memory\Pool Nonpaged Bytes"
这两个命令可以分别查看分页内存池和非分页内存池的使用情况。
- 查询系统的内存分页文件的详细信息:
Get-WmiObject -Class Win32_PageFileSetting | Select-Object Name, Size, InitialSize, MaxSize
这个命令将显示分页文件的名称、大小、初始大小和最大大小。
- 查看内存缓存大小:
Get-Counter "\Memory\Cache Bytes"
这个命令会返回系统内存缓存的大小。
- 监控内存使用的实时变化:
Get-Counter "\Memory\% Committed Bytes In Use" -Continuous
这个命令会持续显示内存的使用情况,实时监控内存的占用比例。
- 查看系统内存限制(如果有):
Get-WmiObject -Class Win32_ComputerSystem | Select-Object TotalPhysicalMemory, MaxCapacity
这条命令会显示系统的总物理内存和最大内存限制。
通过这些命令,你可以更细致地分析系统内存的使用情况,帮助排查性能问题或者优化资源分配。
继续补充一些有用的 PowerShell 命令,以帮助更深入地分析和优化系统内存的使用情况:
- 查看内存分页文件的使用情况(详细信息):
Get-WmiObject -Class Win32_PageFileUsage | Select-Object Name, AllocatedBaseSize, CurrentUsage, PeakUsage
这条命令显示了分页文件的基本信息,包括分页文件名称、已分配的基准大小、当前使用量以及峰值使用量。
- 查看内存压力(Page Faults):
Get-Counter "\Memory\Page Faults/sec"
该命令显示系统的分页错误率,也就是每秒发生的页面错误数,反映了内存访问的效率。
- 监控内存使用情况(每秒统计):
Get-Counter -Counter "\Memory\Available MBytes" -Continuous
这个命令会持续输出可用内存大小(以MB为单位)的变化,可以帮助实时监控内存的使用趋势。
- 查看内存的物理地址扩展(PAE)支持情况:
Get-WmiObject -Class Win32_ComputerSystem | Select-Object Manufacturer, Model, TotalPhysicalMemory, PAE
PAE(物理地址扩展)允许操作系统访问超过 4GB 的物理内存,如果系统支持,命令会返回相关信息。
- 查看操作系统和内存相关的详细性能数据:
Get-Counter "\Memory\Pages/sec"
该命令提供每秒钟系统执行页面交换的次数,反映系统内存和磁盘之间的交换行为。
- 获取内存总量和每个内存模块的基本信息:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, BankLabel, Capacity, Speed, MemoryType
这条命令将提供更多关于内存条的详细信息,包括内存的制造商、槽位、容量、速度和类型等。
- 查看物理内存的健康状态:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, Capacity, Speed, Status
这会显示内存条的状态信息,可以用来判断内存是否正常工作。
- 查看当前系统的内存使用情况和虚拟内存配置:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory, PageFileSize
这条命令会显示内存的总量、空闲内存、虚拟内存的总量、空闲虚拟内存以及分页文件的大小。
- 查看当前内存分配的详细信息:
Get-Counter "\Memory\Committed Bytes"
这个命令会返回系统已承诺(分配)内存的总量,帮助判断是否存在内存分配过度的问题。
- 查看内存块的大小和使用情况:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object CommittedVirtualMemorySize, FreePhysicalMemory, TotalVirtualMemorySize
该命令展示了已承诺的虚拟内存大小、空闲物理内存以及总虚拟内存的大小,帮助更全面地了解内存的分配和使用情况。
- 查看内存状态、类型及其它相关属性:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Capacity, Speed, Manufacturer, MemoryType, PartNumber, FormFactor, Status
这条命令详细列出内存条的容量、速度、类型、部件号、形式因素和状态信息,适合查看物理内存的详细配置。
- 查看系统内存是否有硬件错误:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object OSArchitecture, TotalVisibleMemorySize, FreePhysicalMemory, LastBootUpTime
这条命令会显示操作系统架构、总物理内存、空闲物理内存以及系统的上次启动时间,如果系统遇到内存硬件问题,可能会在日志中出现提示。
- 查看内存的缓存和缓冲区:
Get-Counter "\Memory\Cache Bytes", "\Memory\Committed Bytes"
这将帮助你了解内存缓存区的大小和已承诺的内存总量,通常用于分析是否有缓存溢出问题。
通过这些命令,你可以获得关于内存使用的非常详细的信息,帮助进行更全面的内存分析。
继续为你补充一些有用的 PowerShell 命令,进一步帮助你更全面地监控和分析系统的内存情况:
- 查看物理内存和虚拟内存的详细统计:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory, PagingFiles
这条命令提供系统的总物理内存、可用物理内存、总虚拟内存、可用虚拟内存以及分页文件信息。
- 查看内存分页的使用率:
Get-Counter "\Memory\Pages Input/sec"
该命令显示每秒钟输入分页的数量,可以帮助你了解系统是否过度依赖分页文件。
- 查看内存输出情况:
Get-Counter "\Memory\Pages Output/sec"
这条命令显示每秒钟内存输出的数量,反映内存和存储设备之间的输出行为。
- 查看内存泄漏可能存在的进程:
Get-Process | Select-Object Name, @{Name="Private Memory (MB)"; Expression={[math]::round($_.PrivateMemorySize / 1MB, 2)}} | Sort-Object "Private Memory (MB)" -Descending
通过查看每个进程的私有内存使用情况,可以帮助识别内存泄漏问题,特别是占用过多内存的进程。
- 查看系统虚拟内存总量和当前使用量:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVirtualMemorySize, FreeVirtualMemory
显示系统的总虚拟内存大小和空闲虚拟内存大小,帮助你了解虚拟内存的使用情况。
- 查看交换文件(页面文件)的配置:
Get-WmiObject -Class Win32_PageFileSetting | Select-Object Name, Size, InitialSize, MaxSize
这条命令显示了页面文件的名称、当前大小、初始大小和最大大小,帮助分析页面文件的配置。
- 查看物理内存的详细信息,包括每个内存条的信息:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, BankLabel, Capacity, Speed, MemoryType, FormFactor, Status
这条命令列出了物理内存的详细属性,如制造商、槽位标签、内存条容量、速度、类型和状态等。
- 监控系统的内存压力:
Get-Counter "\Memory\Available MBytes"
实时显示系统当前可用内存(MB),帮助判断系统是否过载。
- 监控系统中物理内存的使用情况:
Get-Counter "\Memory\Committed Bytes"
这条命令显示已承诺的内存数量,这有助于检查系统是否使用了过多的内存。
- 检查操作系统的内存状态:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
显示操作系统的名称、总内存、空闲内存、总虚拟内存和空闲虚拟内存。
- 查看虚拟内存的交换频率:
Get-Counter "\Memory\Page Reads/sec"
显示每秒的页面读取数,帮助分析内存交换频率是否过高,反映系统是否过度依赖分页文件。
- 查看磁盘与内存之间的交换频率:
Get-Counter "\Memory\Page Writes/sec"
显示每秒钟的页面写入数,反映内存与磁盘之间交换的频率。
- 查看内存的缓存和缓冲区大小:
Get-Counter "\Memory\Cache Bytes", "\Memory\Buffer Bytes"
这条命令将返回系统缓存和缓冲区的大小,帮助判断系统是否存在缓存瓶颈。
- 实时监控系统的内存页面交换情况:
Get-Counter "\Memory\Page Faults/sec" -Continuous
此命令会持续显示系统的页面错误数,反映内存使用情况和磁盘之间的交换行为。
- 查看内存条的使用状态:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object BankLabel, Capacity, Speed, MemoryType, FormFactor, Status
显示每条内存的详细信息,适用于对内存硬件进行排查。
- 查看进程的虚拟内存和物理内存使用情况:
Get-Process | Select-Object Name, @{Name="Virtual Memory (MB)"; Expression={[math]::round($_.VirtualMemorySize / 1MB, 2)}}, @{Name="Physical Memory (MB)"; Expression={[math]::round($_.WorkingSet / 1MB, 2)}}
该命令会列出所有进程的虚拟内存和物理内存使用情况,帮助识别内存密集型进程。
- 查看物理内存总量和系统支持的最大内存:
Get-WmiObject -Class Win32_ComputerSystem | Select-Object TotalPhysicalMemory, MaxCapacity
显示系统总物理内存和最大支持的内存容量,可以帮助判断系统是否达到了内存的硬件上限。
通过这些命令,你可以进一步深入了解系统内存的使用情况,帮助诊断内存相关问题并进行性能优化。
继续为你补充一些 PowerShell 命令,这些命令可以帮助你更精细地管理和分析系统内存、性能及资源使用情况:
- 获取当前内存使用的详细报告:
Get-Counter "\Memory\Available MBytes", "\Memory\Committed Bytes", "\Memory\Pages/sec"
该命令显示系统当前可用内存、已承诺内存和每秒页面交换的数量。可以帮助分析内存压力和交换活动。
- 查看所有进程的内存使用情况,包括私有内存和共享内存:
Get-Process | Select-Object Name, @{Name="Private Memory (MB)"; Expression={[math]::round($_.PrivateMemorySize / 1MB, 2)}}, @{Name="Shared Memory (MB)"; Expression={[math]::round($_.SharedMemorySize / 1MB, 2)}}
这条命令显示所有进程的私有内存和共享内存使用情况,帮助分析内存资源的分配。
- 查看内存缓存和页面文件的性能指标:
Get-Counter "\Memory\Cache Bytes", "\Memory\Pagefile Bytes"
这条命令提供缓存和页面文件的使用情况,可以帮助分析是否存在内存瓶颈。
- 监控系统内存的分页错误(Page Faults):
Get-Counter "\Memory\Page Faults/sec" -Continuous
这个命令会实时显示分页错误的数量,帮助检测是否发生过多的内存分页,通常是系统内存不足时的表现。
- 获取内存和磁盘之间的页面交换详细信息:
Get-Counter "\Memory\Page Reads/sec", "\Memory\Page Writes/sec"
这条命令显示内存的页面读取和写入频率,帮助你分析内存是否过度依赖磁盘交换。
- 获取内存使用的进程详细信息,按内存占用排序:
Get-Process | Sort-Object WorkingSet -Descending | Select-Object Name, @{Name="Memory (MB)"; Expression={[math]::round($_.WorkingSet / 1MB, 2)}} | Format-Table -AutoSize
该命令按进程的物理内存使用量排序,并显示每个进程的内存占用情况。
- 查看系统的内存分页文件设置:
Get-WmiObject -Class Win32_PageFileSetting | Select-Object Name, Size, InitialSize, MaxSize
显示页面文件的配置参数,了解页面文件的初始大小、当前大小以及最大大小。
- 查看内存相关的操作系统详细信息:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
这条命令列出操作系统的内存相关详细信息,包括总物理内存、剩余物理内存、虚拟内存等。
- 检测系统内存资源的使用趋势:
Get-Counter "\Memory\Available MBytes" | Select-Object -ExpandProperty CounterSamples | Format-Table
该命令可以帮助你查看系统内存使用的变化趋势,便于分析内存压力变化。
- 获取内存条的详细硬件信息:
Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, BankLabel, Capacity, Speed, MemoryType, FormFactor, Status
这条命令显示内存条的硬件细节,如制造商、容量、速度等。
- 分析内存使用高峰时段:
Get-Counter "\Memory\Page Faults/sec" | Select-Object -ExpandProperty CounterSamples | Format-Table -Property Timestamp, CookedValue
显示每个时间点的分页错误频率,帮助你识别系统内存使用的高峰期。
- 查看内存的使用率,并显示内存的物理状态:
Get-Counter "\Memory\Committed Bytes", "\Memory\Cache Faults/sec", "\Memory\Pool Nonpaged Bytes"
这条命令显示了系统的已承诺内存、缓存页面错误和非分页池的内存使用情况。
- 查看虚拟内存的使用情况和剩余容量:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVirtualMemorySize, FreeVirtualMemory
显示虚拟内存的总量和空闲容量,帮助了解虚拟内存的使用情况。
- 实时查看内存页交换情况(分页写入):
Get-Counter "\Memory\Page Writes/sec" -Continuous
该命令会持续显示每秒钟内存的分页写入次数,帮助分析内存压力和交换活动。
- 查看系统内存缓存状态:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory
这条命令可以帮助你查看系统的物理内存和虚拟内存使用情况,帮助你分析内存的总使用情况。
- 查看内存的分配详情,按内存使用最多的进程排序:
Get-Process | Sort-Object WorkingSet -Descending | Select-Object Name, @{Name="Memory (MB)"; Expression={[math]::round($_.WorkingSet / 1MB, 2)}}, Id | Format-Table -AutoSize
这条命令按内存使用量对进程进行排序,并列出每个进程的内存占用量。
通过这些命令,你可以更加深入地理解内存和系统资源的分配情况,及时发现可能存在的内存问题,并帮助优化系统性能。
这些 PowerShell 命令提供了深入了解和优化系统内存资源使用的强大工具。你可以利用这些命令来:
- 监控内存压力和交换活动,及时发现系统内存瓶颈。
- 识别高内存使用进程,进行优化或终止以释放资源。
- 分析内存分配和缓存策略,确保系统高效运行。
- 追踪系统内存使用趋势,帮助提前规划资源分配。
这些命令可以帮助管理员和开发人员全面掌握系统内存的实时状态,进而优化和提升系统性能。
PS C:\Users\Administrator> Get-WmiObject Win32_PhysicalMemory
__GENUS : 2
__CLASS : Win32_PhysicalMemory
__SUPERCLASS : CIM_PhysicalMemory
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PhysicalMemory.Tag="Physical Memory 0"
__PROPERTY_COUNT : 36
__DERIVATION : {CIM_PhysicalMemory, CIM_Chip, CIM_PhysicalComponent, CIM_PhysicalElement...}
__SERVER : WIN-666
__NAMESPACE : root\cimv2
__PATH : \\WIN-F5DOFSM2V33\root\cimv2:Win32_PhysicalMemory.Tag="Physical Memory 0"
Attributes : 2
BankLabel : BANK 0
Capacity : 2147483648
Caption : 物理内存
ConfiguredClockSpeed : 1867
ConfiguredVoltage : 1200
CreationClassName : Win32_PhysicalMemory
DataWidth : 64
Description : 物理内存
DeviceLocator : ChannelA-DIMM0
FormFactor : 12
HotSwappable :
InstallDate :
InterleaveDataDepth : 1
InterleavePosition : 1
Manufacturer : Samsung
MaxVoltage : 1500
MemoryType : 0
MinVoltage : 1500
Model :
Name : 物理内存
OtherIdentifyingInfo :
PartNumber :
PositionInRow :
PoweredOn :
Removable :
Replaceable :
SerialNumber : 666
SKU :
SMBIOSMemoryType : 29
Speed : 1867
Status :
Tag : Physical Memory 0
TotalWidth : 64
TypeDetail : 128
Version :
PSComputerName : WIN-666
__GENUS : 2
__CLASS : Win32_PhysicalMemory
__SUPERCLASS : CIM_PhysicalMemory
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PhysicalMemory.Tag="Physical Memory 2"
__PROPERTY_COUNT : 36
__DERIVATION : {CIM_PhysicalMemory, CIM_Chip, CIM_PhysicalComponent, CIM_PhysicalElement...}
__SERVER : WIN-666
__NAMESPACE : root\cimv2
__PATH : \\WIN-F5DOFSM2V33\root\cimv2:Win32_PhysicalMemory.Tag="Physical Memory 2"
Attributes : 2
BankLabel : BANK 2
Capacity : 2147483648
Caption : 物理内存
ConfiguredClockSpeed : 1867
ConfiguredVoltage : 1200
CreationClassName : Win32_PhysicalMemory
DataWidth : 64
Description : 物理内存
DeviceLocator : ChannelB-DIMM0
FormFactor : 12
HotSwappable :
InstallDate :
InterleaveDataDepth :
InterleavePosition :
Manufacturer : Samsung
MaxVoltage : 1500
MemoryType : 0
MinVoltage : 1500
Model :
Name : 物理内存
OtherIdentifyingInfo :
PartNumber :
PositionInRow :
PoweredOn :
Removable :
Replaceable :
SerialNumber : 666
SKU :
SMBIOSMemoryType : 29
Speed : 1867
Status :
Tag : Physical Memory 2
TotalWidth : 64
TypeDetail : 128
Version :
PSComputerName : WIN-666
Get-WmiObject Win32_PhysicalMemory 命令输出的属性名称。根据你提供的信息,以下是这些属性的意义:
Attributes: 内存条的属性BankLabel: 内存条插槽标签,用于标识每个内存条插槽Capacity: 内存条容量,单位是字节Caption: 内存条的标题描述ConfiguredClockSpeed: 内存条的配置时钟速度ConfiguredVoltage: 内存条的配置电压CreationClassName: 创建类名DataWidth: 数据宽度Description: 描述DeviceLocator: 内存条设备位置描述,用于标识每个内存条的插槽位置FormFactor: 内存条封装形式HotSwappable: 是否支持热插拔InstallDate: 安装日期InterleaveDataDepth: 内存条的交织数据深度InterleavePosition: 内存条的交织位置Manufacturer: 内存条制造商MemoryType: 内存类型Model: 内存条型号PartNumber: 内存条零件号PositionInRow: 内存条在行中的位置PoweredOn: 是否处于开机状态Removable: 是否可移动Replaceable: 是否可更换SerialNumber: 内存条序列号SMBIOSMemoryType: SMBIOS 内存类型Speed: 内存条时钟速度Status: 状态Tag: 标签TotalWidth: 总宽度TypeDetail: 类型详细信息Version: 版本PSComputerName: PowerShell 执行命令的计算机名称- 32
命令来获取内存的所有信息:
wmic memorychip list full
该命令将返回内存模块的所有属性和值
WMIC 命令获取的内存模块的各个属性信息,具体含义如下:
BankLabel: 内存条插槽的标签Capacity: 内存条的容量DataWidth: 内存条的数据宽度Description: 内存条的描述信息DeviceLocator: 指示内存条安装在计算机中的位置FormFactor: 内存条的封装形式HotSwappable: 指示内存条是否支持热插拔InstallDate: 内存条安装日期InterleaveDataDepth: 内存条的交织数据深度InterleavePosition: 内存条的交织位置Manufacturer: 内存条的制造商MemoryType: 内存条的类型Model: 内存条的型号Name: 内存条的名称OtherIdentifyingInfo: 其他识别信息PartNumber: 内存条的零件号PositionInRow: 内存条在行中的位置PoweredOn: 内存条是否处于开启状态Removable: 内存条是否可移动Replaceable: 内存条是否可更换SerialNumber: 内存条的序列号SKU: 内存条的库存单位Speed: 内存条的时钟速度Status: 内存条的状态Tag: 内存条的标签TotalWidth: 内存条的总宽度TypeDetail: 类型详细信息Version: 内存条的版本信息- 28
通过获取这些属性信息,可以全面了解每个内存条的规格和特性。
PowerShell 命令来获取计算机上所有内存的详细信息:
Get-WmiObject Win32_PhysicalMemory | Select-Object Manufacturer, PartNumber, Capacity, Speed, DeviceLocator, FormFactor
这条命令将列出所有物理内存条的制造商(Manufacturer)、零件编号(PartNumber)、容量(Capacity)、速度(Speed)、设备位置(DeviceLocator)和封装形式(FormFactor)等信息。
通过这些信息,你可以了解每条内存的具体参数和配置情况。
Manufacturer: 内存条制造商PartNumber: 内存条零件号Capacity: 内存条容量,单位是字节Speed: 内存条时钟速度,单位是 MHzDeviceLocator: 内存条插槽位置描述,例如 DIMM1 或者 SIMM2FormFactor: 内存条封装形式,例如 DIMM、SODIMM 等。
PowerShell 中,你可以使用以下命令来查看你的计算机是否支持双通道内存和当前内存的配置情况:
Get-WmiObject Win32_PhysicalMemory | Select-Object BankLabel, Capacity, DeviceLocator, MemoryType, FormFactor
这条命令会列出所有物理内存条的信息,包括插槽标签(BankLabel)、容量(Capacity)、设备位置(DeviceLocator)、内存类型(MemoryType)和封装形式(FormFactor)。
通过这些信息,你可以确定内存条的配置情况;如果两条内存条位于不同的插槽且满足双通道内存的要求,那么你的计算机就支持双通道内存。
BankLabel: 内存条插槽标签,用于标识每个内存条插槽Capacity: 内存条容量,单位是字节DeviceLocator: 内存条设备位置描述,用于标识每个内存条的插槽位置MemoryType: 内存条类型,例如 0 表示未知, 20 表示 DDR4 SDRAMFormFactor: 内存条封装形式,例如 8 表示 DIMM、12 表示 SODIMM 等。
Get-WmiObject -Class 命令用于查询 Windows Management Instrumentation (WMI) 类的实例,WMI 提供了有关硬件和操作系统信息的详细数据。以下是一些常见的 Get-WmiObject 命令示例:
1. 查询操作系统信息
Get-WmiObject -Class Win32_OperatingSystem
此命令返回操作系统的详细信息,如版本、制造商、安装日期等。
2. 查询CPU信息
Get-WmiObject -Class Win32_Processor
返回 CPU 的信息,包括型号、架构、核心数、逻辑处理器数等。
3. 查询内存信息
Get-WmiObject -Class Win32_PhysicalMemory
返回物理内存条(RAM)的详细信息,包括容量、速度、制造商等。
4. 查询硬盘信息
Get-WmiObject -Class Win32_DiskDrive
返回硬盘的详细信息,包括型号、大小、序列号等。
5. 查询主板信息
Get-WmiObject -Class Win32_BaseBoard
返回主板(基板)的详细信息,包括制造商、产品型号、序列号等。
6. 查询网络适配器信息
Get-WmiObject -Class Win32_NetworkAdapter
返回网络适配器的详细信息,包括名称、MAC 地址、状态、网卡类型等。
7. 查询显卡信息
Get-WmiObject -Class Win32_VideoController
返回显卡的详细信息,包括显卡型号、驱动版本、内存等。
8. 查询电池信息(笔记本)
Get-WmiObject -Class Win32_Battery
返回电池的详细信息,包括电池状态、电量、制造商等(适用于笔记本电脑)。
9. 查询打印机信息
Get-WmiObject -Class Win32_Printer
返回打印机的详细信息,包括打印机状态、型号、驱动版本等。
10. 查询计算机系统信息
Get-WmiObject -Class Win32_ComputerSystem
返回计算机的详细信息,包括计算机名、内存、操作系统等。
11. 查询系统启动模式
Get-WmiObject -Class Win32_BootConfiguration
返回系统启动的配置信息,例如启动路径和配置文件。
12. 查询安装的软件信息
Get-WmiObject -Class Win32_Product
返回所有安装的软件信息,包括软件名称、版本等。
13. 查询驱动程序信息
Get-WmiObject -Class Win32_PnPSignedDriver
返回已安装的设备驱动程序的详细信息,包括驱动版本、设备描述、驱动状态等。
14. 查询系统时间和时区信息
Get-WmiObject -Class Win32_TimeZone
返回系统的时区信息,包括时区名称、UTC 偏移量等。
15. 查询系统事件日志信息
Get-WmiObject -Class Win32_NTLogEvent
返回系统事件日志的信息,包括事件 ID、源、类别等。
示例:查询具体属性
通过管道传输可以提取指定的属性。例如:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, Version, Manufacturer
这个命令将返回操作系统的名称(Caption)、版本(Version)和制造商(Manufacturer)信息。
使用 Select-Object 提取特定字段
Get-WmiObject -Class Win32_Processor | Select-Object Name, Manufacturer, MaxClockSpeed
返回处理器的名称、制造商和最大时钟速度。
通过 Where-Object 过滤数据
例如,如果您只想查找 Win32_DiskDrive 类中序列号包含特定文本的硬盘:
Get-WmiObject -Class Win32_DiskDrive | Where-Object { $_.SerialNumber -like "*ABC*" }
使用 Get-CimInstance(替代 Get-WmiObject)
Get-CimInstance 是 PowerShell 中的新方法,它比 Get-WmiObject 更加高效并且更稳定:
Get-CimInstance -ClassName Win32_Processor
Get-CimInstance 主要用于与 WMI 进行通信并替代 Get-WmiObject。
这些命令是基于 WMI (Windows Management Instrumentation) 类的查询,可以获取系统和硬件的详细信息。如果您需要特定的硬件或系统属性,可以根据您的需求调整命令。
16. 查询操作系统版本信息
如果您需要查询操作系统的详细版本信息,包括系统的架构类型(32位/64位)和其他信息:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, OSArchitecture, Version, BuildNumber
Caption:操作系统名称OSArchitecture:操作系统架构(例如:32-bit 或 64-bit)Version:操作系统版本BuildNumber:操作系统构建号
17. 查询进程信息
如果需要查看当前运行的进程,可以使用以下命令:
Get-WmiObject -Class Win32_Process
该命令返回当前系统上所有进程的详细信息,包括进程名称、进程ID(PID)、状态、内存使用等。
可以通过 Select-Object 提取某些字段:
Get-WmiObject -Class Win32_Process | Select-Object Name, ProcessId, WorkingSetSize
18. 查询网络适配器配置
如果您希望查看网络适配器的详细信息,可以执行以下命令:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration
这将显示有关每个网络适配器的信息,包括 IP 地址、子网掩码、默认网关等。要过滤出仅有 IP 地址的适配器,可以用 Where-Object 来筛选:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true } | Select-Object Description, IPAddress
19. 查询系统电池信息(仅适用于笔记本电脑)
对于笔记本电脑,您可以查询电池的健康状况:
Get-WmiObject -Class Win32_Battery | Select-Object BatteryStatus, EstimatedChargeRemaining, DesignCapacity, FullChargeCapacity
BatteryStatus:电池状态(如充电、放电)EstimatedChargeRemaining:电池剩余电量DesignCapacity:电池设计容量FullChargeCapacity:电池充满电时的容量
20. 查询所有硬件设备信息
使用以下命令可以列出所有的硬件设备:
Get-WmiObject -Class Win32_PnPEntity
该命令会返回所有硬件设备的信息,包括设备名称、状态、设备ID等。
21. 查询服务信息
查询系统服务的详细信息:
Get-WmiObject -Class Win32_Service
返回有关系统中所有服务的信息,包括服务名称、状态(运行中或停止)和启动类型(自动、手动、禁用)。
可以按服务状态过滤,只查看正在运行的服务:
Get-WmiObject -Class Win32_Service | Where-Object { $_.State -eq "Running" }
22. 查询用户账户信息
查询系统中的用户账户信息:
Get-WmiObject -Class Win32_UserAccount
此命令将列出系统中的所有用户账户信息,包括用户名、全名、账户类型等。
23. 查询共享文件夹信息
如果需要查看系统中共享的文件夹,可以使用以下命令:
Get-WmiObject -Class Win32_Share
该命令返回系统中所有共享的文件夹及其相关信息。
24. 查询磁盘分区信息
获取磁盘分区信息:
Get-WmiObject -Class Win32_DiskPartition
该命令返回磁盘分区的详细信息,包括磁盘号、分区大小等。
25. 查询系统启动信息
查询系统的启动配置,例如系统的启动路径:
Get-WmiObject -Class Win32_BootConfiguration | Select-Object Caption, BootDirectory, BootDevice
Caption:启动配置描述BootDirectory:启动目录BootDevice:启动设备
26. 查询 BIOS 信息
查询系统的 BIOS 信息,包括版本、日期等:
Get-WmiObject -Class Win32_BIOS | Select-Object Manufacturer, Version, ReleaseDate
Manufacturer:BIOS 制造商Version:BIOS 版本ReleaseDate:BIOS 发布日期
27. 查询时间同步信息
如果您想查看系统的时间同步状态:
Get-WmiObject -Class Win32_Clock
该命令返回有关系统时钟的详细信息,包括时区、时间同步状态等。
使用 Get-CimInstance(代替 Get-WmiObject)
Get-CimInstance 是查询 WMI 数据的更现代和更高效的方式,推荐使用。它与 Get-WmiObject 几乎相同,但支持更高效的数据传输和更广泛的功能。
例如:
Get-CimInstance -ClassName Win32_Processor
这将返回有关处理器的详细信息。
使用 Select-Object 来筛选字段
您可以通过 Select-Object 命令来选择显示特定字段:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, Version, Manufacturer
此命令只会显示操作系统的名称(Caption)、版本(Version)和制造商(Manufacturer)。
这些 Get-WmiObject 命令和 Select-Object 筛选字段的组合可以帮助您非常灵活地查询 Windows 系统的各种硬件和系统信息。您可以根据需求,调整查询的类和字段。
28. 查询 Windows 事件日志
你可以查询操作系统可能记录的特定事件:
Get-WmiObject -Class Win32_NTLogEvent | Select-Object EventCode, Message, TimeGenerated
这将返回事件代码、消息和事件生成的时间。
29. 查询系统启动信息
如果你对系统的启动配置和路径感兴趣,可以使用:
Get-WmiObject -Class Win32_BootConfiguration | Select-Object Caption, BootDirectory, BootDevice
这将提供系统使用的启动配置、目录和启动设备信息。
30. 查询具有特定属性的系统进程
如果你需要更详细的进程信息,包括 CPU 使用情况,可以增强你的进程查询:
Get-WmiObject -Class Win32_Process | Select-Object Name, ProcessId, CommandLine, ThreadCount, KernelModeTime, UserModeTime
这将显示进程的名称、进程 ID、命令行参数、线程数,以及在内核和用户模式下消耗的 CPU 时间。
31. 查询 GPU/显卡信息
如果你需要收集有关显卡或视频控制器的信息:
Get-WmiObject -Class Win32_VideoController | Select-Object Name, DriverVersion, VideoModeDescription
这将返回显卡名称、驱动版本和视频模式描述(例如分辨率、颜色深度)。
32. 查询操作系统及服务包信息
如果你希望获取操作系统信息以及安装的任何服务包,可以使用:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, ServicePackMajorVersion, ServicePackMinorVersion
这将返回操作系统的名称,以及已安装的服务包的主要和次要版本。
33. 列出所有网络适配器的网络配置
要查看所有网络接口的 IP 配置,可以使用:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true } | Select-Object Description, IPAddress, DefaultIPGateway
此命令会过滤出已分配 IP 地址的网络适配器,并显示它们的描述、IP 地址和默认网关。
34. 列出硬件信息(使用 Win32_PnPEntity)
要查看连接到系统的所有硬件设备的信息:
Get-WmiObject -Class Win32_PnPEntity | Select-Object Name, DeviceID, Status
这将显示所有即插即用设备的名称、设备 ID 和状态。
35. 查询系统中安装的软件
你可以查询系统中所有已安装的软件:
Get-WmiObject -Class Win32_Product | Select-Object Name, Version
这将显示系统中所有已安装的软件包的名称和版本。
36. 获取特定打印机的信息
如果你想获取特定打印机的信息,可以使用:
Get-WmiObject -Class Win32_Printer | Where-Object { $_.Name -like "*HP*" } | Select-Object Name, Status, PortName
这将过滤出名称包含 "HP" 的打印机,并显示打印机的名称、状态和端口。
37. 查询计算机系统信息
要获取整体计算机系统的配置:
Get-WmiObject -Class Win32_ComputerSystem | Select-Object Manufacturer, Model, TotalPhysicalMemory
这将提供系统的制造商、型号和总物理内存信息。
38. 查询系统服务并过滤运行中的服务
要找出当前正在运行的服务:
Get-WmiObject -Class Win32_Service | Where-Object { $_.State -eq "Running" } | Select-Object Name, State, StartMode
这将列出正在运行的服务的名称、状态和启动模式(是否自动启动、手动启动或禁用)。
39. 查询电池健康状态和剩余电量(笔记本电脑)
对于笔记本电脑,检查电池状态和健康状况非常重要。你可以使用:
Get-WmiObject -Class Win32_Battery | Select-Object BatteryStatus, EstimatedChargeRemaining, DesignCapacity, FullChargeCapacity
这将显示电池的状态、剩余电量、设计容量和完全充电容量。
40. 使用 Get-CimInstance 进行更高效的查询
如前所述,Get-CimInstance 是一种比 Get-WmiObject 更现代和高效的方法。例如:
Get-CimInstance -ClassName Win32_Processor
这将使用 CIM(通用信息模型)检索处理器的详细信息,这是查询 WMI 数据的更新方法。
这些只是如何使用 Get-WmiObject(或 Get-CimInstance)收集 Windows 计算机系统和硬件信息的一些示例。你可以根据特定需求调整这些命令,无论是进行故障排除、审计还是收集系统数据。

浙公网安备 33010602011771号