从多个变量创建自定义PowerShell对象

时间:2015-10-27 05:13:47

标签: string powershell

这看起来应该非常简单但我无法想象如何去做。

如何从多个变量/字符串创建自定义PowerShell对象?

我有3个变量,如下所示。

$name = @'
Bob
Kate
John
'@

$age = @'
35
12
57
'@

$gender = @'
Male
Female
Male
'@

如何将其转换为PowerShell对象,如下所示?

输出

name age gender
---- --- ------
bob  35  male  
kate 12  female
john 57  male 

3 个答案:

答案 0 :(得分:0)

首先将所有字符串拆分为数组,然后按索引迭代一个数组,并通过new-object psobject$object|add-member -type noteproperty创建变量。请注意,您最好最初拥有此类数据的结构,否则错过或添加的CRLF可能会弄乱您的数据。

$arrname=$name.split("`r`n")
$arrage=$age.split("`r`n")
$arrgender=$gender.split("`r`n")
foreach ($i in 0..($arrname.length-1)) {
    $ob=new-object psobject
    $ob | add-member -type noteproperty -name "Name" -value $arrname[$i]
    # add other fields similarly
    $ob
}

答案 1 :(得分:0)

你可以尝试一下,我不为此感到自豪,但它确实起到了作用。

$psobj = ($name.Split("`n")) | % {[PSCustomObject]@{name=$_}} | % {$n=0}{Add-Member -Name "age" -InputObject $_ -MemberType NoteProperty -Value $($age.Split("`n"))[$n];Add-Member -Name "gender" -InputObject $_ -MemberType NoteProperty -Value $($gender.Split("`n"))[$n];$n++;$_}

我创建了一个与名称相对应的对象,并使用Add_Member添加其他成员。

答案 2 :(得分:0)

这可行,但如前所述,您的数据需要完美格式化。我不得不抛弃.trim()来摆脱一些空白区域。

$name = @'
Bob
Kate
John
'@

$age = @'
35
12
57
'@

$gender = @'
Male
Female
Male
'@
$myNames = $name.Split("`n").Trim()
$myAges = $age.Split("`n").Trim()
$myGenders = $gender.Split("`n").Trim()

$myArray = @()

for ($i = 0; $i -lt $mynames.count; $i++)
{ 
    $myObj = "" | select Name,Age,Gender
    $myObj.Name = $myNames[$i]
    $myObj.Age = $myAges[$i]
    $myobj.Gender = $myGenders[$i]

    $myArray += $myObj

}
$myArray