在 Powershell 中检查 CPU 名称

Check the CPU name in Powershell

提问人:StartingPS 提问时间:2/22/2023 最后编辑:Santiago SquarzonStartingPS 更新时间:2/22/2023 访问量:154

问:

我试图知道处理器名称是否等于或类似于特定的字符串值,但我没有找到一个好的解决方案。这是我的代码

$nameCPU = WMIC CPU Get Name
Write-host $nameCPU[2]   # The server has two different CPUs

$CheckName = $nameCPU[2] -eq "Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz"

Write-Host $CheckName

输出如下所示:

Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
False

$CheckName始终为 False

有人可以帮助我吗?谢谢

字符串 PowerShell 比较 CPU

评论

1赞 Santiago Squarzon 2/22/2023
试一试(Get-CimInstance Win32_Processor).Name -eq 'Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz'
0赞 StartingPS 2/22/2023
我有这个结果:(Get-CimInstance Win32_Processor)。名称 -eq 'Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz' Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
1赞 Santiago Squarzon 2/22/2023
更改为如果有多个处理器,则返回-eq-in$true
0赞 Christophe 2/22/2023
$CheckName始终为 False,因为 wmic 响应中的“2.30GHz”后面有空格
0赞 Avinash Chandravansi 2/22/2023
我猜 -Match 会起作用

答:

2赞 Santiago Squarzon 2/22/2023 #1

可以使用 Win32_Processor获取 CPU 名称,用于查询此类的 cmdlet 是 Get-CimInstance

通常,您将用于比较 2 个标量值,但是,如果您的服务器可能具有 1 个以上的 CPU,那么最安全的检查方法是使用 -in-contains。值得注意的是,这两个运算符都在数组中查找确切的值。通配符或正则表达式对他们不起作用。-eq

$cpuInfo = Get-CimInstance -ClassName Win32_Processor
$cpuInfo.Name -contains "Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz" # should be True

评论

1赞 StartingPS 2/22/2023
是的!!我有一个真实的结果!完美 非常感谢