我正在尝试使用Windows Forms使用PowerShell制作GUI,而且我一直在使用非常有用且看起来很活泼的PropertyGrid对象,但我不确定它是否喜欢与PowerShell一起玩得很好。我特别关注Active Directory cmdlet。
我想在PropertyGrid中显示AD用户对象。出于测试目的,我创建了这个简单的函数:
Function Show-Object
{
$Form = New-Object "System.Windows.Forms.Form"
$Form.Size = New-Object System.Drawing.Size @(600,600)
$PropertyGrid = New-Object "System.Windows.Forms.PropertyGrid"
$PropertyGrid.Dock = [System.Windows.Forms.DockStyle]::Fill
$Form.Text = "$args"
$PropertyGrid.SelectedObject = $args[0]
$Form.Controls.Add($PropertyGrid)
$Form.TopMost = $true
$Form.ShowDialog()
}
然后我跑
PS> Show-Object (Get-ADUser Testing)
它显示了我希望它显示的内容。另一方面,当我运行这个
PS> Show-Object (Get-ADUser Testing -Properties *)
结果PropertyGrid中的PropertyCount达到我期望的数字,但是仍然没有出现其他属性。我实际上并不想像本例中那样显示所有属性,但添加特定属性似乎也不起作用。有没有办法按照我想要的方式完成这项工作,或者我是否需要寻找替代解决方案?
答案 0 :(得分:0)
不确定您使用Show-Object
进行了哪些规划,但Lonely Administrator做了一个相当不错的功能,与Show-Object
做同样的事情。它被称为Out-GridList。也许如果您看到该脚本如何工作,您将能够修复您的脚本。例如,我只是将Out-GridList
函数复制到测试脚本并在同一个脚本中调用该函数。
function Out-GridList {
...
}
Get-ADUser Testing -Properties * | Out-GridList