【问题标题】:retrieving cpu speed and remove } from output检索 CPU 速度并从输出中删除 }
【发布时间】:2011-07-11 22:08:31
【问题描述】:

我正在尝试提高 CPU 速度。

这是我目前所做的

$cpu = [string](get-wmiobject Win32_Processor | select name)
$($cpu.split("@")[-1]).trim()

我的输出是

2.40GHz}

如何在不使用字符串函数的情况下从输出中删除“}”? 有没有更好的方法来实现我的目标? 提前致谢

【问题讨论】:

  • 如果你愿意,你想试试(get-wmiobject Win32_Processor).MaxClockSpeed

标签: powershell cpu-speed


【解决方案1】:
PS > $p = Get-WmiObject Win32_Processor | Select-Object -ExpandProperty Name
PS > $p -replace '^.+@\s'
2.40GHz

【讨论】:

  • 同意,谢伊。 -expandProperty 并不为人所知,但这正是它的用处。
【解决方案2】:

你知道吗……我不开心!

Powershell 提供对象!对象包含信息,而您仍在尝试操作字符串的人

(get-wmiobject Win32_Processor).MaxClockSpeed

提供最大 CPU

之后你可以给你想要的字符串格式

$cpuSpeed = ((get-wmiobject Win32_Processor).MaxClockSpeed)/1000
$cpuspeedstring = ("{0}Go" -f  $cpuspeed)

【讨论】:

  • 我仍然会解析字符串。在我的一台机器上,MaxClockSpeed 是 1862,与Name 中的“1.86GHz”足够接近。但另一方面,MaxClockSpeed 是 1994,我宁愿显示来自Name 的“2.00GHz”。如果它最终必须格式化为一个字符串以进行显示,我宁愿从一个已经按照我想要的方式格式化的字符串开始,然后从中取出一个块,而不是调整一个有点 的整数 准确。
【解决方案3】:

顺便说一句,split()trim() 是字符串函数。

你可以替换}:

$($cpu.split("@")[-1]).trim() -replace '}',''

附录:这是一个更简单的方法。

$cpu = (get-wmiobject Win32_Processor).name.split(' ')[-1]

您看到的} 是通过将Select-Object(创建一个对象)的结果转换为string 而产生的人工制品。相反,您只需直接获取name 属性,而是拆分空格字符并获取string[] 的最后一段。

【讨论】:

  • +1。嗨乔尔。感谢您的快速回复。我知道 split() 和 trim() 都是字符串函数,但在我看来,获得简单信息的所有这些混乱都很奇怪,我希望有一种更清洁的方法。 :)
  • Downvoter:我希望能解释一下我的答案是无用还是不正确。 (这不可能是报复性的,嗯?我在这里投了反对票。)
  • 乔尔。别介意。有时甚至对我来说,即使是有很多票的接受的答案也会被否决。这是一个奇怪的世界。 :) 甚至我的问题也被否决了,可能来自同一个人。我们会一样的。
  • @nick:我知道。只是缺乏解释是没有建设性的。这就是为什么如果帖子已被编辑,我们可以更改投票。
猜你喜欢
  • 2023-01-25
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 2021-05-04
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多