在Powershell中创建表

时间:2015-09-04 01:49:38

标签: arrays powershell multidimensional-array

伙计我有一个查询远程计算机服务的脚本。它运行2个嵌套的foreach循环,1个用于计算机列表,内部用于服务列表。我想以二维数组捕获进程的输出。

The desired output should be like this:

Computer    Service   State   StartupMode
-------------------------------------------
data         data      data     data
data         data      data     data
data         data      data     data
data         data      data     data

我已经获取了数据并将其显示在控制台上,但未能将其存储在多列数组中。 哈希表只能接受2列。

3 个答案:

答案 0 :(得分:7)

您可以通过执行以下操作来创建具有所有这些属性的对象:

$yourData = @(
    @{Computer="Data";Service="Data";State="Data";StartupMode="Data"},
    @{Computer="Data";Service="Data";State="Data";StartupMode="Data"},
    @{Computer="Data";Service="Data";State="Data";StartupMode="Data"},
    @{Computer="Data";Service="Data";State="Data";StartupMode="Data"}) | % { New-Object object | Add-Member -NotePropertyMembers $_ -PassThru }

$yourData

答案 1 :(得分:1)

试试这个:

使用WMI,因为Get-Service没有StartupMode

$Array = @()
$Computers = "Computer1","Computer2","Computer3"

Foreach ($Computer in $Computers)
{
$Services = Get-WmiObject Win32_Service -ComputerName $Computer | Select name,state,startmode
    Foreach ($Service in $Services)
    {
    $Result = "" | Select Computer,Service,State,StartupMode
    $Result.Computer = $Computer
    $Result.Service = $Service.Name
    $Result.State = $Service.State
    $Result.StartupMode = $Service.StartMode
    $Array += $Result
    }
}

$Array

答案 2 :(得分:0)

简化@Avshalom的答案,您可以将$ Service直接添加到$ Array:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt