Powershell中的数组到表

时间:2019-04-17 07:29:06

标签: powershell powershell-v4.0

帮我解决一些问题。我是PS新手, 我需要输出数据到表视图。 看起来像这样。

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输出值

3 个答案:

答案 0 :(得分:0)

如果仅以Get-Service为例,则可以使用Select

Get-Service | Select Name, Status

其他

$MyList | Select Name1, Name2

此外,如果您有复杂的命令,并且想要提取PSObject的表:

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

详细了解Select-Objecthttps://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-object?view=powershell-4.0

答案 1 :(得分:0)

您可能有一个自定义的Commandlet,但您可以运行类似于以下内容的

(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

然后创建一个对象,该对象与以下数组“合并”:

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

输出为:

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

答案 2 :(得分:0)

是的,Piotr Stapp是权利。您可以使用格式表

示例1:

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

示例2:

(获取服务)|选择名称,状态|格式表

示例3:

获取过程| FT