Я пытаюсь выяснить , как создать объекты, установить поля для этого объекта, а затем добавить объект в коллекцию.
В частности, как я могу создать $newPerson
где Name
- это поле "joe", а array
состоит из "phone1, phone2, phone3"? Точно так же у «sue» есть массив «cell4 et c» и «alice» с ее атрибутами и так далее. В конечном итоге, чтобы поместить эти три объекта в массив объектов, $collectionOfPeople
?
вывод:
thufir@dur:~/flwor/csv$
thufir@dur:~/flwor/csv$ pwsh import.ps1
people name
joe name
phone1 attribute
phone2 attribute
phone3 attribute
sue name
cell4 attribute
home5 attribute
alice name
atrib6 attribute
x7 attribute
y9 attribute
z10 attribute
thufir@dur:~/flwor/csv$
код:
$tempAttributes = @()
$collectionOfPeople = @()
function attribute([string]$line) {
Write-Host $line "attribute"
$tempAttributes += $line
}
function name([string]$line) {
Write-Host $line "name"
#is a $newPerson ever instantiated?
$newPerson = [PSCustomObject]@{
Name = $line
Attributes = $tempAttributes
}
$newPerson #empty? no output
$collectionOfPeople += $newPerson
$tempAttributes = @()
}
$output = switch -regex -file people.csv {
'\d' { attribute($_) ; $_ }
default { name($_); $_ }
}
#how to read the file from top to bottom?
#[array]::Reverse($output)
#$output
$collectionOfPeople #empty???
ввод из CSV
file:
people
joe
phone1
phone2
phone3
sue
cell4
home5
alice
atrib6
x7
y9
z10
В приведенном выше CSV
между записями нет маркера, поэтому я использую оператор if
для предположения , что каждые атрибут имеет цифры, а имена никогда не имеют цифр.