是否可以预先创建自定义对象(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"
提前感谢任何线索或建议。
答案 0 :(得分: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
}
如果您有多个逐个运行的测试,您可以在测试并创建“resultobject”的函数中运行测试,然后收集它:
$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"
答案 1 :(得分:2)
是的,所以我知道这是一篇旧帖子,但Don Jones做了类似的事情:
$props = @{
Name = "John"
Gender = "Male"
Age = 30
}
$c = New-Object PSObject -Property $props
您可以运行以下命令查看属性和值新对象:
c$ | Get-Member
我认为这就是你要找的东西。