Выбрать один объект из группы объектов

Как я могу это исправить:

В этой группе 2 объекта, один содержит имя в поле «Переезд (Имя)», а другой - нет:

$rest.Group | select * | Where-Object {$_.SERV_UNIT -eq '2704'}

Account_no                 : 12345
SERV_UNIT                  : 2704
FINALREAD                  : 
Move-In (Name)             : OWNER / CURRENT TENANT
Move-In (Home Phone #)     : 
Move-In (Business Phone #) : 
Move-In (Email)            : 

Account_no                 : 12345
SERV_UNIT                  : 2704
FINALREAD                  : 
CHANNEL_ID                 : 
Move-In (Name)             : 
Move-In (Home Phone #)     : 
Move-In (Business Phone #) : 
Move-In (Email)            : 

Я хочу выбрать только тот, у которого есть ход по имени.

Однако с кодом, который я написал, поскольку они относятся к одной группе, я тоже не буду брать его:

$rest = $allinfo | Group-Object account_no | Where-Object { $_.Group.FINALREAD -contains '' -and $_.Group.'Move-In (Name)' -notcontains ''} | Select * -Unique 

$ rest теперь ничего не значит. Я хочу, чтобы у него был один результат, первый с «Владелец» в качестве имени въезда.

Чтобы получить правильный результат, мне нужно сделать следующее:

$rest = $allinfo | Group-Object account_no | Where-Object { $_.Group.FINALREAD -contains ''} | Select * -Unique 
$newRest = @()
foreach ($row in $rest.group) {

if ($row.'Move-In (Name)' -notcontains '')
{
    $newRest += $row 
}
}

Можно ли сделать все это в одной строке?

$rest = $allinfo | Group-Object account_no | Where-Object { $_.Group.FINALREAD -contains '' -and $_.Group.'Move-In (Name)' -notcontains ''} | Select * -Unique 

Если нет, ничего страшного, у меня есть ответ.

Спасибо за помощь


person Simon Yo    schedule 19.04.2018    source источник
comment
А $rest = $allinfo | Group-Object account_no | Where-Object { $_.Group.FINALREAD -contains '' -and $_.Group.'Move-In (Name)'} | Select * -Unique не работает?   -  person Olaf    schedule 19.04.2018
comment
@Olaf, это даст мне оба результата. Я только одну запись, одну с именем владельца / арендатора, и запись без имени, которую нужно пропустить   -  person Simon Yo    schedule 19.04.2018


Ответы (1)


Возможно, вы можете сначала удалить записи, которые вам не нужны (пустой Move-In), затем сгруппировать по учетной записи и перечислить группы учетных записей, которые содержат одно или несколько пустых FINALREAD-значений

$rest = $allinfo | Where-Object { $_.Group.'Move-In (Name)' } | Group-Object account_no | Where-Object { $_.Group.FINALREAD -contains '' }
person Frode F.    schedule 19.04.2018
comment
Это связано с тем, что некоторые сгруппированные учетные записи имеют 2 или более записей, и внутри одна из учетных записей не была прочитана. Если одна учетная запись не была прочитана, тогда все они должны перейти в $ rest. Затем после этого я должен проверить имя въезда, потому что мне не нужны записи без имени въезда. Может быть, мне сначала нужно удалить пустые имена въезда - person Simon Yo; 19.04.2018
comment
Удалите как можно больше на раннем этапе. - person Frode F.; 19.04.2018
comment
Лмао, я идиот. Все, что мне нужно было сделать, это удалить пустые имена для въезда, когда я создаю $ allinfo wow wow wow, как я мог упустить из виду такую ​​простую вещь. lmao - person Simon Yo; 19.04.2018