从对象组中选择单个对象

时间:2018-04-19 14:40:06

标签: powershell powershell-v5.0 powershell-ise

我该如何解决这个问题:

这个组中有2个对象, 一个名字在'Move-In(Name)'下包含一个名字,一个不包含:

$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 

如果没有,没关系,我有答案。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

也许您可以首先删除不需要的记录(空Move-In),然后按帐户分组,并列出包含一个或多个空白FINALREAD的帐户组 - 值

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