首页 > 解决方案 > 将参数限制为特定类型;使用 CimInstance 时

问题描述

有没有一种明智的方法来限制用于函数的参数类型,当它可能被封装在一个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
}

问题?

即我的要求只是第一个参数是安全描述符,我的第二个是ACE;但是因为我在当前的实现中使用 CIM 来获取这些,所以它们恰好是CimInstance. 然后我希望强制它们代表正确的底层对象,因此必须使用ValidateScript来检查CimClass. 但是,从这个功能的角度来看,CIM 的使用是一个任意的细节;它

标签: powershellparameterswmipowershell-v5.1cim

解决方案


推荐阅读