我已经与Powershell合作了一点,我不需要在大多数任务中都有一本书或参考手册。我仍然需要不时在这里搜索或MSDN,但现在它的频率要低得多。
很多关于Powershell的信息都很容易获得,但你只需要知道在哪里看。这就是我被困住的地方。
我想要做的是列出给定对象的所有可接受的属性值,而不必拉出MSDN文档(干燥器比绝缘天花板瓦片干燥)。别在这里误解我;我不是要求列出对象的当前属性或默认属性,我只想列出对象的属性并查看我可用的选项。
以下是我不谈论的一个例子:
New-Object System.Diagnostics.ProcessStartInfo "PowerShell" | gm
或:
(New-Object System.Diagnostics.ProcessStartInfo "Powershell").FileName
第二个查询该特定命名属性的当前值或默认值。第一个将列出包含Name
,MemberType
和Definition
的表格。 Definition
会提供类型,句柄,参数和\或{get; set;}
(取决于MemberType
是method
,property
,{{1}等等)。
假设我想设置该特定属性 - 我如何知道哪些值有效以及哪些值无效?
我我所谈论的内容将是这样的:
event
或:
(New-Object Windows.Forms.Form).FormBorderStyle | gm
对于$form = New-Object Windows.Forms.Form
$form.FormBorderStyle | gm
,有效的可分配值为:FormBorderStyle
,None
,FixedSingle
,Fixed3D
,FixedDialog
,{{1} },或Sizable
。我发现这些的唯一方法是通过在异常期间呈现的文本。如何在不依赖异常的情况下找到这些值?
理想情况下,我不想继续搜索MSDN,TechNet或StackOverflow。是否有我可以在Powershell中使用的cmdlet或查询(在get-help或man之外)给我这些信息? Get-Help \ man在涉及更小,更明确的范围时不是很有用。
不说“Google it”,“RTFM”或“变得好”,你们有什么建议?
感谢。
答案 0 :(得分:2)
在这种特定情况下,FormBorderStyle
是枚举,因此可以使用:
[enum]::getvalues((New-Object Windows.Forms.Form).FormBorderStyle.gettype())
快速说明:我的判决并不意味着在其他情况下这不起作用。相同的语法对任何枚举都有效。
归功于@TheMadTechnician,另一种可能的语法:
[Windows.Forms.FormBorderStyle].GetEnumNames()
如果您无法查找枚举的名称,也可以将两者结合起来:
(New-Object Windows.Forms.Form).FormBorderStyle.gettype().GetEnumNames()