Powershell 只输出第一个值
Powershell Only Outputting First Value
我正在为我管理的一些服务器创建报告。
我在报告中有很多其他信息,我已经得到了我想要的信息,但这已经困扰了我一段时间 - 无论我做什么,在哪里搜索,我都没有能够解决问题。
以下代码检查我的 7 个服务器是否有任何以 "Office Comm" 开头的停止服务,并显示在 HTML table 中停止的所有服务,但它只会输出第一个任何已停止的服务而不是整个列表...我已经搜索并重新编码并尝试了不同的方法但无法解决....任何帮助将不胜感激!
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
这是另一种方法:
$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 对您的原始错误的评论。
我正在为我管理的一些服务器创建报告。
我在报告中有很多其他信息,我已经得到了我想要的信息,但这已经困扰了我一段时间 - 无论我做什么,在哪里搜索,我都没有能够解决问题。
以下代码检查我的 7 个服务器是否有任何以 "Office Comm" 开头的停止服务,并显示在 HTML table 中停止的所有服务,但它只会输出第一个任何已停止的服务而不是整个列表...我已经搜索并重新编码并尝试了不同的方法但无法解决....任何帮助将不胜感激!
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
这是另一种方法:
$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 对您的原始错误的评论。