想要将输出存储在数组

时间:2016-03-29 15:09:52

标签: powershell-v2.0

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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