想要将输出存储在数组中

Want to store output in an array

我有一个服务器列表。我想检查一下所有自动服务都不是 运行。我想将它存储在数组中,然后以网格视图格式显示。 我在下面尝试过,但没有用。

foreach ($i in $list) {
    $Res = @(Get-WmiObject Win32_Service -ComputerName $i | Where-Object {
               $_.StartMode -eq 'Auto' -and $_.State -ne 'Running'
           } | Select PSComputerName, Name, DisplayName, State, StartMode)
}

$Res | Out-GridView

在循环内为 $Res 赋值会在每个循环周期覆盖该值。对于这样的构造,您需要将变量定义为循环外的数组,然后附加到它:

$Res = @()
foreach ($i in $list) {
    $Res += Get-WmiObject ...
}

但是,这必然会表现不佳。通常最好将循环中生成的输出分配给变量:

$Res = foreach ($i in $list) {
    Get-WmiObject ...
}