我有一个对象的arraylist,但我想以表格格式将它们输出到控制台,如Get-Process
为进程。
如何将List作为表格输出?
Format-Table只会抛出错误
$bulidsList | Format-Table -Auto -InputObject $bulidsList
"输入对象不能绑定到命令的任何参数,因为该命令不接受管道输入或输入及其属性与任何接受管道输入的参数都不匹配"
答案 0 :(得分:2)
你在问题中提到过"对象的一个arraylist"。 这是一个简单的测试,向您展示如何使用Format-Table:
$a = @()
$a += [pscustomobject]@{a = 1; b = 2}
$a += [pscustomobject]@{a = 3; b = 4}
$a += [pscustomobject]@{a = 5; b = 6}
$a | Format-Table
这是输出:
a b
- -
1 2
3 4
5 6
答案 1 :(得分:1)
为什么同时使用pipe和-InputObject? (至少有一个我猜错了)
$bulidList | Format-Table
答案 2 :(得分:0)
我最近遇到这个问题。我想获取Azure虚拟机及其IP地址的列表并显示为表格。
第一个解决方案无效。
function Get-IpAddresses1{
Write-Host "Private Ip Addresses"
$privateIpAddress = New-Object System.Collections.ArrayList;
Get-AzNetworkInterface | where {$_.VirtualMachine.Id -ne $null} | foreach {
$privateIpAddress.Add(@{
VirtualMachine = ($_.VirtualMachine.Id.Split('/') | select -Last 1)
Ip = $_.IpConfigurations[0].PrivateIpAddress
});
}
$privateIpAddress | Format-Table;
}
其结果如下。
Private Ip Addresses
0
1
2
3
Name Value
---- -----
Ip 10.0.1.5
VirtualMachine hemantcassandratest1
Ip 10.0.1.6
VirtualMachine hemantcassandratest2
Ip 10.0.1.7
VirtualMachine hemantcassandratest3
Ip 10.0.0.4
VirtualMachine hemanttestvm
要摆脱要打印的索引,请将Add方法的返回值分配给临时变量。
function Get-IpAddresses1{
Write-Host "Private Ip Addresses"
$privateIpAddress = New-Object System.Collections.ArrayList;
Get-AzNetworkInterface | where {$_.VirtualMachine.Id -ne $null} | foreach {
$temp = $privateIpAddress.Add(@{
VirtualMachine = ($_.VirtualMachine.Id.Split('/') | select -Last 1)
Ip = $_.IpConfigurations[0].PrivateIpAddress
});
}
$privateIpAddress | Format-Table;
}
我现在得到如下结果。
Private Ip Addresses
Name Value
---- -----
Ip 10.0.1.5
VirtualMachine hemantcassandratest1
Ip 10.0.1.6
VirtualMachine hemantcassandratest2
Ip 10.0.1.7
VirtualMachine hemantcassandratest3
Ip 10.0.0.4
VirtualMachine hemanttestvm
要获得符合我期望的结果,我不得不使用另一种语法来创建对象。
function Get-IpAddresses{
Write-Host "Private Ip Addresses"
$privateIpAddress = New-Object System.Collections.ArrayList;
Get-AzNetworkInterface | where {$_.VirtualMachine.Id -ne $null} | foreach {
$temp = $privateIpAddress.Add((New-Object PSObject -Property @{
VirtualMachine= ($_.VirtualMachine.Id.Split('/') | select -Last 1);
Ip=$_.IpConfigurations[0].PrivateIpAddress}));
}
$privateIpAddress | Format-Table;
}
现在结果如下。
Private Ip Addresses
Ip VirtualMachine
-- --------------
10.0.1.5 hemantcassandratest1
10.0.1.6 hemantcassandratest2
10.0.1.7 hemantcassandratest3
10.0.0.4 hemanttestvm
干杯, 赫曼特(Hemant)