[英]Display WinForms object properties in Out-GridView
在测试时,我经常想通过将变量传递到 Out-GridView 来检查 WinForms object 的属性,但它没有正确显示。 每个属性都显示为单独的列。 通过使用计算属性,我能够得到我正在寻找的东西,但我必须在计算中按名称引用 object。 我也觉得也许我让这件事变得比需要的更难。 我对 Powershell 很陌生,所以请原谅我的无能。
这是我目前所拥有的:
Add-Type -AssemblyName System.Windows.Forms
$Form = New-Object System.Windows.Forms.Form
$Form | Get-Member -MemberType Property | Select-Object Name, @{Name='Value';Expression={$Form.($_.Name)}} | Out-GridView
听起来您希望表单的每个属性都显示在网格视图中自己的行上,而不是在默认情况下在单行的列中显示所有属性。 换句话说,您正在寻找类似Format-List
的显示而不是类似Format-Table
的显示。
一个简单的解决方案是使用内在的psobject
属性来反映对象的属性:
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.psobject.Properties |
Select-Object Name, Value |
Out-GridView
示例 output - 请注意每个属性名称-值对如何位于其自己的行中:
function Show-ObjectProperties([Parameter(ValueFromPipeline)]$F){
($F|Get-Member -M Property).Name|ForEach{@{$_=$F.$_}}|
OGV -Title ($MyInvocation.Line -replace '^\$|\s*\|.+')
}
$MainForm = [Windows.Forms.Form]::new()
$SecondaryForm = [Windows.Forms.Form]::new()
$MainForm|Show-ObjectProperties
$SecondaryForm|Show-ObjectProperties
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.