作为一个喜欢彻底记录的人,我很高兴发现PowerShell V3中添加的SupportsWildcards
属性等。我已根据需要在我的库中使用该属性修饰参数。从长远来看,没有问题,但在短期内仍有很多人因各种原因使用V2(包括我在一个环境中)。
仅仅因为一个属性,我的某些功能无法再在PowerShell V2中运行,这似乎很愚蠢。所以我正在寻找一种方法来模拟V2中的属性,从根本上把它变成“无操作”。
我认为解决方案需要两个部分:
我正在寻找两个部分的指导,之前没有玩过自定义属性。
答案 0 :(得分:2)
也许你可以试试这个。
Add-Type @"
public class CustomAttribute : System.Attribute
{
public bool SupportSomething { get; set; }
}
"@
function Do-Something {
param(
[CustomAttribute(SupportSomething=$true)]
$Command
)
}
$parameters = Get-Command -Name Do-Something | Select-Object -ExpandProperty Parameters
$parameters["Command"].Attributes
然后输出:
SupportSomething : True
TypeId : CustomAttribute
我们首先在C#中定义属性,您也可以在PowerShell中执行此操作。 将该属性添加到参数中。然后获取属性列表。有关更多属性示例,请参阅here