我正在尝试使用PSCustomObject来存储来自远程计算机的大量信息。我似乎无法使Format-Table的输出按我想要的方式工作。
如图所示,PSCustom对象中的项目列表显示在花括号内,而不是列标题下的列表。
下面是我用来生成测试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 $_
答案 0 :(得分:0)
你的问题相当简短,给想象留下了很多。但是,您似乎希望从多个源收集信息数组并将其组合以生成整齐格式化的输出。我可以提供一个可能(或可能不)帮助您的示例。该示例从几台计算机收集HotFix信息(每个@PetSerAI),并为每个修补程序返回一个对象,该对象通过管道传输到格式表中。
<#
.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