You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取PowerShell电源计划的十六进制值并转换为十进制?

获取当前活动电源计划的显示器关闭超时设置(PowerShell)

提取并转换AC/DC电源下的超时值

直接通过以下脚本即可分离AC(插电)和DC(电池)模式下的十六进制设置,并转换为十进制的秒数/分钟数:

# 获取显示器超时相关的配置块
$displayTimeoutBlock = powercfg /QUERY | Select-String -Pattern "Turn off display after" -Context 2, 7

# 提取AC电源下的十六进制值
$acHexValue = ($displayTimeoutBlock.Context.PostContext | Where-Object { $_ -match 'Current AC Power Setting Index:' }) -replace '^.*:\s*(0x[0-9a-fA-F]+)', '$1'
# 提取DC电源下的十六进制值
$dcHexValue = ($displayTimeoutBlock.Context.PostContext | Where-Object { $_ -match 'Current DC Power Setting Index:' }) -replace '^.*:\s*(0x[0-9a-fA-F]+)', '$1'

# 转换为十进制秒数,再转为分钟(可选)
$acTimeoutSeconds = [int32]$acHexValue
$acTimeoutMinutes = [math]::Round($acTimeoutSeconds / 60, 2)

$dcTimeoutSeconds = [int32]$dcHexValue
$dcTimeoutMinutes = [math]::Round($dcTimeoutSeconds / 60, 2)

# 输出结果
Write-Host "插电模式下显示器关闭超时:$acTimeoutSeconds 秒(约 $acTimeoutMinutes 分钟)"
Write-Host "电池模式下显示器关闭超时:$dcTimeoutSeconds 秒(约 $dcTimeoutMinutes 分钟)"

关键步骤说明

  • 提取配置块:-Context 2,7 会捕获匹配行前后的内容,其中PostContext是匹配行之后的7行内容,正好包含AC/DC的设置项。
  • 正则提取十六进制值:用-replace结合正则表达式,精准剥离行内的十六进制值(匹配0x开头的十六进制字符串)。
  • 类型转换:PowerShell会自动识别0x前缀的十六进制格式,用[int32]可直接将其转为十进制整数。

如果不需要分钟数,只保留$acTimeoutSeconds和$dcTimeoutSeconds的输出即可。

内容的提问来源于stack exchange,提问作者tomaito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:52:21