Powershell только вывод первого значения

Я создаю отчет для некоторых серверов, которыми я управляю.

У меня есть много другой информации в отчете, которая у меня есть, как я хочу, но это беспокоило меня некоторое время - и независимо от того, что я делаю и где я искал, я не смог решить вопрос.

Следующий код проверяет мои 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

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 относительно вашей первоначальной ошибки.

Другие вопросы по тегам