例如:
function TestThis()
{
[MySpecialCustomAttribute]
[CmdletBinding()]
Param(...)
Process{...}
}
答案 0 :(得分:0)
允许Attribute
(或UsageType.All
)的UsageType.Class
派生的任何类型都可用于函数本身(即Param
以上)
允许Attribute
或UsageType.Property
使用的UsageType.Field
派生的任何类型都可用于参数本身或变量。
只是懒惰并使用UsageType.All
(例如内置OutputType
属性就是这样),这种情况并不少见。
using namespace System.Management.Automation
class ValidateFileExistsAttribute : ValidateArgumentsAttribute {
[void] Validate([object]$arguments, [EngineIntrinsics]$engineIntrinsics) {
if($null -eq $arguments) {
throw [System.ArgumentNullException]::new()
}
if(-not (Test-Path -Path "$arguments" -Type Leaf)) {
throw [System.IO.FileNotFoundException]::new("The specified path is not a file: '$arguments'")
}
}
}
请参阅more examples博客上的Kevin Marquette。
有an older example here显示如何使用Add-Type在PowerShell 4及更早版本中执行此操作,虽然它现在有点过时,因为它显示的特定示例已集成到PowerShell 6中,不再需要
还有videos