Format-Table 从大括号中的 pscustomobject 输出列表
Format-Table ouputting List from pscustomobject in curly braces
我正在尝试使用 PSCustomObject 来存储来自远程计算机的一堆信息。我似乎无法让 Format-Table 的输出按照我想要的方式工作。
如图所示,PSCustom object 中的项目列表显示在大括号内,而不是列 header 下的列表。
下面是我用来生成测试 PSCustomObject 并填充其中一个属性的代码。
$EnvironmentInfo = [PSCustomObject] @{Name=[System.Collections.ArrayList]@(); Description=[System.Collections.ArrayList]@(); Publisher=[System.Collections.ArrayList]@(); Doggo=[System.Collections.ArrayList]@()}
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo | Format-Table -Property $_
你的问题比较简短,想象空间很大。然而,您似乎想要从多个来源收集一系列信息并将其组合起来以生成格式整齐的输出。我可以提供一个可能(或可能不会)帮助您的示例。该示例从多台机器收集 HotFix 信息(根据@PetSerAI)和 returns 每个热修复的对象,该对象通过管道传输到 Format-Table.
<#
.Synopsis
Gather HotFix Info
.DESCRIPTION
Gather HotFix Info from one or more computers
.EXAMPLE
@("LCFSQL01","LCFSQL02","LCFSQL03","LCFSQL05") | Gather-HotFixInfo
Gathers info for several remote machines
.EXAMPLE
Gather-HotFixInfo -Machine = "LCFSQL01"
Gathers info for a single remote machine
#>
Function Gather-HotFixInfo
{
[CmdletBinding()]
Param
(
# Machine remote machine name
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
Position=0)]
[string]$Machine
)
Process
{
Try
{
Get-HotFix -ComputerName $machine | ForEach-Object {
[pscustomobject]@{Name=$_.CSName;
Description=$_.Description;
HotFixID=$_.HotFixID;
Doggo="Doggo"}
}
}
Catch
{
Write-Warning "Could not connect to $machine"
}
}
}
# List of all computers from which to gather info
@("LCFSQL01","LCFSQL02","LCFSQL03","LCFSQL05") | Gather-HotFixInfo | Format-Table
我正在尝试使用 PSCustomObject 来存储来自远程计算机的一堆信息。我似乎无法让 Format-Table 的输出按照我想要的方式工作。
如图所示,PSCustom object 中的项目列表显示在大括号内,而不是列 header 下的列表。
下面是我用来生成测试 PSCustomObject 并填充其中一个属性的代码。
$EnvironmentInfo = [PSCustomObject] @{Name=[System.Collections.ArrayList]@(); Description=[System.Collections.ArrayList]@(); Publisher=[System.Collections.ArrayList]@(); Doggo=[System.Collections.ArrayList]@()}
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo.Name.Add("Doggo")
$EnvironmentInfo | Format-Table -Property $_
你的问题比较简短,想象空间很大。然而,您似乎想要从多个来源收集一系列信息并将其组合起来以生成格式整齐的输出。我可以提供一个可能(或可能不会)帮助您的示例。该示例从多台机器收集 HotFix 信息(根据@PetSerAI)和 returns 每个热修复的对象,该对象通过管道传输到 Format-Table.
<#
.Synopsis
Gather HotFix Info
.DESCRIPTION
Gather HotFix Info from one or more computers
.EXAMPLE
@("LCFSQL01","LCFSQL02","LCFSQL03","LCFSQL05") | Gather-HotFixInfo
Gathers info for several remote machines
.EXAMPLE
Gather-HotFixInfo -Machine = "LCFSQL01"
Gathers info for a single remote machine
#>
Function Gather-HotFixInfo
{
[CmdletBinding()]
Param
(
# Machine remote machine name
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
Position=0)]
[string]$Machine
)
Process
{
Try
{
Get-HotFix -ComputerName $machine | ForEach-Object {
[pscustomobject]@{Name=$_.CSName;
Description=$_.Description;
HotFixID=$_.HotFixID;
Doggo="Doggo"}
}
}
Catch
{
Write-Warning "Could not connect to $machine"
}
}
}
# List of all computers from which to gather info
@("LCFSQL01","LCFSQL02","LCFSQL03","LCFSQL05") | Gather-HotFixInfo | Format-Table