我正在处理一系列自定义对象并将其与变量匹配。
我有一个变量:$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
但这似乎不起作用......
提前致谢!
答案 0 :(得分:0)
由于SelectedItem
属性包含在Name
中某个项的$CustomerFileArray
属性中找到的字符串,因此您应该将Where-Object
应用于$CustomerFileArray
这样:
$CustomerFileArray |Where-Object {$_.Name -eq $CmbCust.SelectedItem} |Select-Object -ExpandProperty File
这将返回您最初分配给数组中相应对象的FileInfo
属性的File
对象