在Powershell模块中,您是否可以使用自定义属性修饰函数,以便您可以运行Get-Command -Module(或类似的东西)以根据用户条件获取函数的子集?
我发现最近的相关问题是: Can I decorate advanced PowerShell functions with my own custom attributes?
答案 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