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

e0bqpujr  于 2022-11-10  发布在  Shell
关注(0)|答案(3)|浏览(196)

这看起来真的很简单,但我想不出该怎么做。
如何从多个变量/字符串创建自定义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
lf5gs5x2

lf5gs5x21#

首先将所有字符串拆分为数组,然后按索引迭代一个数组,并通过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
}
s3fp2yjn

s3fp2yjn2#

这是可行的,但如前所述,您的数据需要进行完美的格式化。我必须加上.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
biswetbf

biswetbf3#

你可以试试这个,我对它不是很自豪,但它很管用。

$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添加其他成员。

相关问题