装饰powershell功能

时间:2013-11-06 16:57:27

标签: powershell

在Powershell模块中,您是否可以使用自定义属性修饰函数,以便您可以运行Get-Command -Module(或类似的东西)以根据用户条件获取函数的子集?

我发现最近的相关问题是: Can I decorate advanced PowerShell functions with my own custom attributes?

1 个答案:

答案 0 :(得分:1)

您可以创建自己的属性,但Get-Command不会知道任何有关它们的信息。但是,您可以编写自己的函数来获取具有指定属性的函数,例如:

Get-Command -Module <moduleName> -CommandType Function | 
    Where {$_.Scriptblock.Attributes.TypeId.Name -match 'CmdletBindingAttribute'}

请注意,这使用PowerShell v3的成员枚举功能。如果你在V2你将需要这样做:

Get-Command -Module <moduleName> -CommandType Function | 
    Where {$_.Scriptblock.Attributes | Foreach {$_.TypeId.Name -match 'CmdletBindingAttribute'}}
另一种获取函数子集的方法是使用动词和名词的标准,例如:

Get-Command -Module <moduleName> Get-*
Get-Command -Module <moduleName> *-SomeNoun