在将函数封装在CimInstance
中时,是否存在一种合理的方法来限制用于函数的参数类型?
例如说我有如下方法:
function Add-DaclAce {
[CmdletBinding()]
[OutputType([System.Void])] #just for the MVP
Param (
[Parameter(Mandatory)]
[ValidateScript({$_.CimClass.CimClassName -eq 'Win32_SecurityDescriptor'})]
[System.Management.Infrastructure.CimInstance]$SecurityDescriptor
,
[Parameter(Mandatory)]
[ValidateScript({$_.CimClass.CimClassName -eq 'Win32_ACE'})]
[System.Management.Infrastructure.CimInstance]$NewDaclAce
)
$SecurityDescriptor.DACL.Add($NewDaclAce) | Out-Null
}
问题?
即我的要求仅是第一个参数是security descriptor,第二个参数是ACE;但是由于我在当前的实现中使用CIM来获取它们,因此它们恰好是CimInstance
类型的。然后,我希望强制它们代表正确的基础对象,因此必须使用ValidateScript
来检查CimClass
。但是,从此功能的角度来看,CIM的使用是任意的。