2015-12-16 2 views
0

У меня есть результаты, работающие с массивом пользовательских объектов и сопоставляющие его с переменной.Как сопоставить значение с моим массивом настраиваемых объектов

У меня есть переменная: $CmbCust.SelectedItem (текущий выбранный элемент в форме WPF)

Выборочная-Object и создание моих элементов в выпадающем списке:

$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 с моим файлом $ CustomerFileArray. Свойство файла

Действие, которое я хотел бы сделать, - это получить путь к выбранному элементу, чтобы удалить его. Я Googled и придумал:

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

Но это не похоже на работу ...

Спасибо заранее!

ответ

0

Поскольку SelectedItem свойство содержит строку, найденную в Name собственности одного из элементов в $CustomerFileArray, вы должны применять Where-Object к $CustomerFileArray так:

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

Это вернет FileInfo объект, первоначально назначенный свойство File соответствующего объекта в массиве

+0

Отлично, это работает. Бесконечно благодарен !! –

Смежные вопросы