在 powershell 中数组到 table

Array to table in powershell

帮我解决一些问题。我是 PS 的新人并且 我需要将数据输出到 table 视图。 看起来像这样。

name1  name2 
-----  ----- 
value1 value2

但是我有:

$a=(get-service).name
$b=(get-service).Status
foreach ($name in $a)
{

$data = [pscustomobject]@{name1 = $name}
}
$data

结果

name1        
-----        
XboxNetApiSvc

没有预留

$a=(get-service).name
$b=(get-service).Status


$data = [pscustomobject]@{name1 = $a ; name2 = $b }

$data

结果

name1                                                                               name2                                  
-----                                                                               -----                                  
{2GISUpdateService, AcronisActiveProtectionService, AcrSch2Svc, AdobeARMservice...} {Stopped, Running, Running, Running...}

此脚本所需的全部内容

$list = ((Get-ADComputer   -SearchBase "OU=PC,DC=cbu,DC=lan" -Filter  {Enabled -eq "True" }  -Properties DNSHostName).DNSHostName) 
$encoding = [System.Text.Encoding]::UTF8
$up = @()
$down = @()
$table= @()
foreach ($pc in $list) 
{
if ((Test-Connection -Count 1  -computer $pc -quiet) -eq $True)
 {
  $up += $pc
  #write-host $pc  "is up"

 }
 else
 {
 $down += $pc
 #Write-Host $pc "down"
 }
 } 

毕竟我需要 2 列的 $up 和 $down 输出值

如果您只使用 Get-Service 作为示例,您可以只使用 Select :

Get-Service | Select Name, Status

其他

$MyList | Select Name1, Name2

此外,如果你有一个复杂的命令并且你想提取 PSObject 的 table :

Get-Process | Select-Object -Property ProcessName, Id, WS

阅读更多关于 Select-Object 的信息:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-object?view=powershell-4.0

您可能有一个自定义命令行开关,但您可以 运行 类似于:

(Get-Service) | select Name,Status | Format-Table

更新

阅读您的更新后。在脚本的末尾,您有两个数组 $up$down。我将把它声明为静态方式以使示例更容易

$up = @('pc1', 'pc2')
$down = @('pc3','pc4', 'pc5')

因为数组可以有不同的长度,你需要计算最大长度:

$max = ($up, $down | Measure-Object -Maximum -Property Count).Maximum

然后创建一个 "merges" 上面数组的对象:

0..$max | Select-Object @{n="Up";e={$up[$_]}}, @{n="Down";e={$down[$_]}}

输出为:

Up  Down
--  ----
pc1 pc3
pc2 pc4
    pc5

是的,Piotr Stapp 是正确的。您可以使用格式-Table

示例 1:

获取进程 |排序对象开始时间 |格式-Table-查看开始时间

示例 2:

(获取服务)| select 姓名、状态 |格式-Table

示例 3:

获取进程 |金融时报