Как установить пользовательский атрибут объектов с помощью Powershell? - PullRequest
0 голосов
/ 15 февраля 2020

Как добавить String данные к array класса OnePerson, чтобы группа данных?

$people = import-csv "./people.csv"


class OnePerson {
  [String] $Info

  people () { } 
}

$myPerson = New-Object -TypeName OnePerson

$manyPeople = New-Object System.Object

$myArray = @()

ForEach ($person in $people) {

  if ($person -match '[0-9]') {
    Write-host $person
    #add $person string to the array $Info of $myPerson
  }
  else { 
    write-host "new person"
    write-host $person
    $myArray += $myPerson
    $myPerson = New-Object -TypeName OnePerson
  }
}

write-host $myArray

вывод:

thufir@dur:~/flwor/people$ 
thufir@dur:~/flwor/people$ pwsh foo.ps1 
new person
@{people=joe}
@{people=phone1}
@{people=phone2}
@{people=phone3}
new person
@{people=sue}
@{people=cell4}
@{people=home5}
new person
@{people=alice}
@{people=atrib6}
@{people=x7}
@{people=y9}
@{people=z10}
OnePerson OnePerson OnePerson
thufir@dur:~/flwor/people$ 

1 Ответ

1 голос
/ 15 февраля 2020

Пример того, как вы можете использовать класс OnePerson и добавить этот элемент в ваш массив:

class OnePerson {
  [String] $Info

  OnePerson () { } 
  OnePerson ([String]$newinfo) { $this.Info = $newInfo }
}

$myArray = @()
$myArray += [OnePerson]::new("John")
$myArray += [OnePerson]::new("Smith")

Конструкторы, которые вы используете в классе, должны иметь то же имя, что и сам ваш класс. После того, как человек был создан и добавлен в myArray, он больше не существует сам по себе, доступен только по ссылке из myArray

...