7

是否可以创建自定义对象 (PSObject) 并在程序执行之前和之后定义其属性,我们不断向对象添加值数组。

例如;

$c = @()

$c = New-Object PSObject
$c | Add-Member -type NoteProperty -name Name 
$c | Add-Member -type NoteProperty -name Gender
$c | Add-Member -type NoteProperty -name Age


$c | Add-Member -type NoteProperty -name Name -value "John"
$c | Add-Member -type NoteProperty -name Gender -value "Male"
$c | Add-Member -type NoteProperty -name Age -value "30"

提前感谢任何线索或建议。

4

2 回答 2

17

我不确定我是否跟随。你想要一个具有指定属性的对象数组吗?因为您的示例首先创建了一个数组,然后您将其覆盖为单个对象。所以你失去了你的阵列。

您可以使用参数中的哈希表来创建对象new-object并将其值指定为属性-Property。像这样:

$c = New-Object psobject -Property @{
    Name = "John"
    Gender = "Male"
    Age = 30
}

要制作它们的数组,您可以使用:

$myarray = @()

$myarray += New-Object psobject -Property @{
    Name = "John"
    Gender = "Male"
    Age = 30
}

如果您有多个要逐个运行的测试,则可以在测试并创建“结果对象”的函数中运行测试,然后收集它:

$myresults = @()

function mytests($computer) {
    #Test connection
    $online = Test-Connection $computer

    #Get buildnumber
    $build = (Get-WmiObject win32_operatingsystem -ComputerName $computer).buildnumber

    #other tests

    #output results
    New-Object psobject -Property @{
        Online = $online
        WinBuild = $build
    }
}

$myresults += mytests -computer "mycomputername"
于 2013-03-13T15:22:18.537 回答
2

是的,所以我知道这是一篇旧帖子,但唐·琼斯做了这样的事情:

$props = @{
    Name = "John"
    Gender = "Male"
    Age = 30
}

$c = New-Object PSObject -Property $props

您可以运行以下命令来查看新对象的属性和值:

c$ | Get-Member

我想这就是你要找的。

于 2013-09-08T21:43:53.833 回答