如何将值与我的自定义对象数组匹配

时间:2015-12-16 11:15:55

标签: arrays wpf powershell

我正在处理一系列自定义对象并将其与变量匹配。

我有一个变量:$CmbCust.SelectedItem(当前WPF格式中选择的项目)

自定义对象以及在组合框中创建我的项目:

$CustomerFileArray = @()
    ForEach ($c in (Get-ChildItem $ProgramRoot\Customers -Filter Customer-*.xml | sort Name -descending)) {
        $XmlCustomer = [xml](Get-Content $ProgramRoot\Customers\$c)
        if ($XmlCustomer.Office365.Customer.Name -eq "") {
            $CustomerName = "- Geen naam"
        }
        Else {
            $CustomerName = $XmlCustomer.Office365.Customer.Name
        }
        $CustomerItem = New-Object PSObject
        $CustomerItem | Add-Member -type NoteProperty -Name 'Name' -Value $CustomerName
        $CustomerItem | Add-Member -type NoteProperty -Name 'File' -Value $c
        $CustomerFileArray += $CustomerItem
        [void] $CmbCust.Items.Add($CustomerName)
    }

$CmbCust.SelectedItem = $XmlOffice365.Office365.Customer.Name

我的问题是,如何将$ CmbCust.SelectedItem中的值与我的Array $ CustomerFileArray的File属性匹配

我想要做的是获取所选项目的路径以将其删除。我用Google搜索并提出:

$RemoveFile = @()
$RemoveFile | where {$CustomerFileArray.ContainsKey($_.CmbCust.SelectedItem)}
Remove-Item $ProgramRoot\Customers\$RemoveFile -Force

但这似乎不起作用......

提前致谢!

1 个答案:

答案 0 :(得分:0)

由于SelectedItem属性包含在Name中某个项的$CustomerFileArray属性中找到的字符串,因此您应该将Where-Object应用于$CustomerFileArray这样:

$CustomerFileArray |Where-Object {$_.Name -eq $CmbCust.SelectedItem} |Select-Object -ExpandProperty File

这将返回您最初分配给数组中相应对象的FileInfo属性的File对象