我正在努力获取域上所有机器的cpu名称。我正在运行以下命令
Get-CimInstance -ComputerName $i.DNSHostName -Class CIM_Processor | Select-Object "PSComputerName", "Name", "NumberOfCores"我利用它的结果来构建一个自定义对象
$workstationWithIp = [PSCustomObject]@{
ComputerName = $i.DNSHostName
CPU = $workstationObj.Name
Cores = $workstationObj.NumberOfCores
IP = $ip
Memory = $memory
Uptime = $uptimeHours
OS = $os.Caption + " " + $os.Version
}我的问题是,有些机器有多个处理器,因此“名称”将返回多个结果。所有这些服务器都有相同模型的多个,所以如何才能将结果删除,以便将其作为字符串放入自定义对象中?我使用这些自定义对象来生成CSV,有些对象将具有cpu名称和核心代码,但是具有多个cpu的对象将为csv中的名称和核心计数提供System.Object[]。

发布于 2022-04-07 16:48:58
正如注释中提到的,从潜在的数组/值集合中选择最多1项的安全方法是通过管道连接到Select-Object -First 1。
[PSCustomObject]@{
ComputerName = $i.DNSHostName
CPU = $workstationObj.Name |Select-Object -First 1
Cores = $workstationObj.NumberOfCores |Select-Object -First 1
IP = $ip
Memory = $memory
Uptime = $uptimeHours
OS = $os.Caption + " " + $os.Version
}https://stackoverflow.com/questions/71785507
复制相似问题