使用 Get-Service 返回对象中的服务器名称

Return a server name within an object using Get-Service

提问人:Ollie99th 提问时间:5/10/2023 更新时间:5/10/2023 访问量:30

问:

我正在尝试为我们的 Elasticsearch 实例引入一些额外的运行状况监控,其中一部分是查看 Elasticsearch 服务是否正在运行。

其中一部分是返回服务器的主机名,然后是 Elasticservice 的 DisplayName 和 Status,最好是作为 PSObject,这样我就可以根据需要选择各个属性。

因此,我有一个服务器阵列,可以从中提取Get-Service信息:

$servers = @("server1","server2","server3")
$services = Get-Service Elasticsearch* -ComputerName $servers | Select -property DisplayName, Status

这似乎没有给我一个包含主机名的方法。因此,我尝试遍历服务器数组。

$servers = @("server1","server2","server3")
$services = foreach($i in $servers){get-service Elasticsearch* -ComputerName $i | Select $i, DisplayName, Status}

这给了我一个名为“server1”的 PSObject 属性,它没有针对它的值,我想我期望这是预期的,但我无法理解如何声明该属性,然后在循环期间添加值。

数组 PowerShell 对象 数据操作 PSAnobject

评论

1赞 Mathias R. Jessen 5/10/2023
替换为Select $i,Select @{Name='Server';Expression={$i}},
0赞 Ollie99th 5/10/2023
太完美了!谢谢马蒂亚斯!

答:

1赞 Mathias R. Jessen 5/10/2023 #1

...但我无法理解如何声明属性,然后在循环期间添加值

有帮助!about_Calculated_Properties帮助主题确切地解释了如何构造所谓的计算属性。

您需要为哈希表提供一个条目 (或 ),以及一个用于计算结果属性值的条目:NameLabelExpression

$servers = @("server1","server2","server3")
$services = foreach($i in $servers){
  Get-Service Elasticsearch* -ComputerName $i | Select @{Name='Server';Expression={$i}}, DisplayName, Status
}

评论

0赞 Ollie99th 5/11/2023
感谢您的帮助主题 Mathias!我一半的挣扎是不知道我不知道什么。