我有一个哈希表数组要处理,需要用户选择一个或多个哈希表以进行进一步处理。我可以使GridView正确显示它们,但是我只需要显示3个或4个属性,这些属性将允许最终用户选择正确的条目并隐藏其余的条目。
返回的对象应该是整个哈希表。
$t = @{}
$t.Name = "Test"
$t.URL = "http://xxx.test"
$t.Type = "UAT"
$RptServers = ,$t
$p = @{}
$p.Name = "Prod-MEL"
$p.URL = "http://xxx.Prod"
$p.Type = "PROD"
$RptServers += $p
$selectedSSRS = $RptServers | ForEach-Object { [PSCustomObject]$_ | Select-Object -Property 'Name','Type' } | Out-GridView -Title "Select Report Server(s)" -PassThru
$selectedSSRS
如果用户选择“测试”,则返回的对象具有以下属性:
Name Type
---- ----
Test UAT
但是我希望整个对象都带有URL等
答案 0 :(得分:0)
将脚本的最后两行更改为以下三行:
$selectedSSRS = $RptServers | ForEach-Object { [PSCustomObject]$_ }
$selectedSSRS | Select-Object -Property 'Name','Type' | Out-GridView -Title "Select Report Server(s)"
$selectedSSRS
“选择对象”过滤器仅在此处的gridview上有效,而$ selectedSSRS具有所有属性
答案 1 :(得分:0)
所以我认为我找到了一个可能的解决方案,但是它不是很优雅,更喜欢“单线”
$temp = $RptServers | ForEach-Object { $_ | Select-Object -Property 'Name','Type' } | Out-GridView -Title "Select Report Server(s)" -PassThru
$selectedSSRS = $RptServers | Where-Object { $_.Name -in $temp.Name }
$selectedSSRS
Where-Object子句将需要在实际代码中进行调整,因为仅Name可能不够唯一,以确保仅将正确的条目添加到所选列表中