1

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

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

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

Write-Host "Getting stopped services snapshot...`n"

$StoppedServicesReport = @()
$StoppedServices = Get-WmiObject -Class Win32_Service -ComputerName $Computers `
    -Filter "displayname like 'Office Comm%' AND state='Stopped'"

foreach ($StoppedService in $StoppedServices) {
    $stoppedRow = New-Object -Type PSObject -Property @{
        Server = $StoppedService.SystemName
        Name = $StoppedService.DisplayName
        Status = $StoppedService.State
    }
    $StoppedServiceReport = $StoppedServiceReport + $stoppedRow
}

$StoppedServiceReport = $StoppedServiceReport | ConvertTo-Html -Fragment
4

1 回答 1

1

这是另一种方法:

$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对您的原始错误的评论。

于 2015-12-26T13:38:56.020 回答