Powershell仅输出第一个值

Powershell仅输出第一个值,powershell,powershell-2.0,reporting,easyhtmlreport,Powershell,Powershell 2.0,Reporting,Easyhtmlreport,我正在为我管理的一些服务器创建报告 我在报告中还有很多其他信息,我已经得到了我想要的,但这已经困扰了我一段时间了——无论我做什么,在哪里搜索,我都无法解决这个问题 下面的代码检查my 7服务器是否有任何以“Office Comm”开头的已停止服务,并在HTML表中显示任何已停止的服务,但是,它将只输出任何停止的服务中的第一个,而不是整个列表…我已经搜索、重新编码并尝试了不同的方法,但无法解决…任何帮助都将不胜感激 Write Host“正在获取停止的服务快照…`n” $StoppedServic

我正在为我管理的一些服务器创建报告

我在报告中还有很多其他信息,我已经得到了我想要的,但这已经困扰了我一段时间了——无论我做什么,在哪里搜索,我都无法解决这个问题

下面的代码检查my 7服务器是否有任何以“Office Comm”开头的已停止服务,并在HTML表中显示任何已停止的服务,但是,它将只输出任何停止的服务中的第一个,而不是整个列表…我已经搜索、重新编码并尝试了不同的方法,但无法解决…任何帮助都将不胜感激

Write Host“正在获取停止的服务快照…`n”
$StoppedServicesReport=@()
$StoppedServices=Get-WmiObject-Class Win32_服务-ComputerName$Computers`
-筛选“显示名称,如'Office Comm%'和state='Stopped'”
foreach($StoppedServices中的StoppedService){
$stoppedRow=新对象-类型PSObject-属性@{
服务器=$StoppedService.SystemName
名称=$StoppedService.DisplayName
状态=$StoppedService.State
}
$StoppedServiceReport=$StoppedServiceReport+$stoppedRow
}
$StoppedServiceReport=$StoppedServiceReport |转换为Html-片段

以下是另一种方法:

$computers | Foreach-Object {

    $computerName = $_

    Get-Service -ComputerName $computerName -DisplayName "Office Comm*" |
        Where-Object { $_.Status -eq "Stopped" } |
        Select-Object @{ n = "Server"; e = { $computerName } }, @{ n = "Name"; e = { $_.DisplayName } }, Status

} | ConvertTo-Html -Fragment

请参阅PetSerAl对您的原始错误的评论。

$StoppedServiceReport
->
$StoppedServicesReport
非常感谢您……真不敢相信我错过了这么多!谢谢你的回答!我在SVR2008上运行这个,所以我不认为GetService也能正常工作。我还是个新手,很高兴知道!