怎么用脚本获取系统分级

wen 实用脚本 1

本文目录导读:

怎么用脚本获取系统分级

  1. 方法一:使用PowerShell(推荐,最灵活)
  2. 方法二:使用CMD(批处理脚本,简单直接)
  3. 方法三:使用VBScript(旧版系统/兼容性)
  4. 重要说明
  5. 总结建议

获取系统分级(通常指Windows的“Windows 体验指数”或“系统性能分级”)的信息,可以使用多种脚本方法,最直接的方法是通过PowerShell查询WMI(Windows Management Instrumentation)或注册表

以下是几种常见的方法,适用于不同的需求和环境。

使用PowerShell(推荐,最灵活)

这种方法可以直接获取每个子分数(处理器、内存、图形、游戏图形、磁盘)和基础分数。

核心命令:

# 获取Win32_WinSAT对象(如果之前运行过评估)
Get-CimInstance -Namespace "root\CIMV2" -ClassName "Win32_WinSAT"

完整示例脚本(带错误处理和输出美化):

<#
.SYNOPSIS
    获取并显示Windows系统性能分级(体验指数)信息。
.DESCRIPTION
    此脚本读取Windows评估结果(WinSAT),并显示各个组件的评分以及基础分数。
    如果系统未运行过性能评估,会给出提示。
#>
function Get-SystemPerformanceRating {
    try {
        # 尝试获取Win32_WinSAT实例
        $winsat = Get-CimInstance -Namespace "root\CIMV2" -ClassName "Win32_WinSAT" -ErrorAction Stop
        # 检查是否为有效的评估数据
        if ($null -eq $winsat) {
            Write-Warning "未找到系统性能评估数据,请先运行 'winsat formal' 命令来评估系统性能。"
            return
        }
        # 定义组件名称与WMI属性的映射
        $ratings = @{
            "处理器"               = [math]::Round($winsat.CPUScore, 1)
            "内存 (RAM)"           = [math]::Round($winsat.MemoryScore, 1)
            "图形"                 = [math]::Round($winsat.GraphicsScore, 1)
            "游戏图形"             = [math]::Round($winsat.D3DScore, 1)
            "主硬盘"               = [math]::Round($winsat.DiskScore, 1)
        }
        # 计算基础分数(各子分数中的最小值)
        $baseScore = [math]::Round($winsat.WinSPRLevel, 1)
        # 输出结果
        Write-Host "======= 系统性能分级信息 =======" -ForegroundColor Cyan
        foreach ($component in $ratings.Keys) {
            Write-Host ("{0,-20}: {1:F1}" -f $component, $ratings[$component])
        }
        Write-Host ("{0,-20}: {1:F1}" -f "基础分数 (WinSPR)", $baseScore) -ForegroundColor Yellow
        Write-Host "================================" -ForegroundColor Cyan
        # 返回对象,便于后续脚本使用
        return $winsat
    }
    catch [Microsoft.Management.Infrastructure.CimException] {
        Write-Error "无法连接到WMI,请以管理员身份运行或检查系统,错误: $($_.Exception.Message)"
    }
    catch {
        Write-Error "发生未知错误: $($_.Exception.Message)"
    }
}
# 调用函数
Get-SystemPerformanceRating

运行方式:

  1. 打开 PowerShell(普通权限即可)。
  2. 复制粘贴上述代码并执行。

使用CMD(批处理脚本,简单直接)

如果你需要一个 .bat.cmd 文件,可以通过读取注册表来实现。

批处理脚本 (Get-PerformanceRating.bat):

@echo off
setlocal enabledelayedexpansion
echo ======= 系统性能分级信息 =======
echo 正在从注册表读取...
:: 读取各子分数(如果不存在则设为"N/A")
for %%a in (ProcessorScore MemoryScore GraphicsScore D3DScore DiskScore) do (
    set "%%a=N/A"
    for /f "tokens=3 skip=2" %%b in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinSAT" /v %%a 2^>nul') do (
        set "%%a=%%b"
    )
)
:: 读取基础分数(WinSPRLevel)
set "BaseScore=N/A"
for /f "tokens=3 skip=2" %%c in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinSAT" /v WinSPRLevel 2^>nul') do (
    set "BaseScore=%%c"
)
:: 输出结果
echo 处理器评分: !ProcessorScore!
echo 内存评分: !MemoryScore!
echo 桌面图形评分: !GraphicsScore!
echo 游戏图形评分: !D3DScore!
echo 主硬盘评分: !DiskScore!
echo.
echo 基础分数: !BaseScore!
if "!BaseScore!"=="N/A" (
    echo.
    echo 注意: 未找到评估数据,请运行 'winsat formal' 以生成数据。
)
endlocal
pause

运行方式:

  1. 将上述代码保存为 Get-Rating.bat
  2. 双击运行或通过CMD执行。

使用VBScript(旧版系统/兼容性)

VBScript同样通过WMI查询,适用于更老的脚本环境。

VBScript脚本 (GetRating.vbs):

Dim objWMIService, colItems, objItem
' 连接到WMI
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
' 查询Win32_WinSAT类
Set colItems = objWMIService.ExecQuery("Select * from Win32_WinSAT")
If colItems.Count = 0 Then
    WScript.Echo "未找到性能评估数据,请先运行 'winsat formal'。"
Else
    For Each objItem in colItems
        WScript.Echo "处理器评分: " & Round(objItem.CPUScore, 1)
        WScript.Echo "内存评分: " & Round(objItem.MemoryScore, 1)
        WScript.Echo "桌面图形评分: " & Round(objItem.GraphicsScore, 1)
        WScript.Echo "游戏图形评分: " & Round(objItem.D3DScore, 1)
        WScript.Echo "主硬盘评分: " & Round(objItem.DiskScore, 1)
        WScript.Echo "基础分数: " & Round(objItem.WinSPRLevel, 1)
    Next
End If

运行方式:

  1. 保存为 GetRating.vbs
  2. 双击运行或在CMD中执行 cscript GetRating.vbs

重要说明

  1. 数据来源

    • WMI路径root\CIMV2\Win32_WinSAT
    • 注册表路径HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinSAT
    • 数据存储文件%SystemRoot%\Performance\WinSAT\DataStore\...Formal.Assessment...XML
  2. 权限

    • 读取数据通常不需要管理员权限,正常运行即可。
    • Get-CimInstance 可能会因为系统策略失败,此时可以尝试使用 Get-WmiObject(但 Get-CimInstance 是更现代、更安全的标准)。
  3. 数据缺失

    • 如果系统从未运行过性能评估(例如新安装的系统或精简版系统),上述脚本可能返回空值或提示“未找到”。
    • 在这种情况下,你需要先运行 winsat formal 来生成评估数据,这个命令需要管理员权限,并且运行时间较长(几分钟)。
  4. 版本差异

    • Windows 8及以上:基础分数范围是 0 到 9.9
    • Windows 7:基础分数范围是 0 到 7.9
    • Windows Vista:基础分数范围是 0 到 5.9
    • 脚本会自动显示实际的数值,你只需要根据系统版本理解其范围即可。

总结建议

  • 对大多数用户和运维场景:推荐使用 PowerShell脚本(方法一),它最清晰、可扩展性强,并且能很好地处理错误。
  • 对需要双击运行的简单场景:可以使用 批处理脚本(方法二)
  • 对旧系统或特定部署环境:可以使用 VBScript(方法三)

选择适合你环境的方法即可。

抱歉,评论功能暂时关闭!