我想将Enum参数传递给Powershell中的ComObject方法。问题是,我不知道如何创建此参数。方法的签名是My.ComObject.Method(EnumType,string,string)。
$o = New-Object -ComObject "My.ComObject"
$o.method([My.EnumType]::EnumValue, "s", "s")
上面的代码总是抛出一个TypeNotFoundException。我还尝试将枚举指定为字符串,但这引发了另一个异常,即它无法将字符串转换为对象。
创建枚举类型的枚举值我需要做什么,该枚举类型与我创建的ComObject位于同一个COM程序集中。
由于
帕斯卡
答案 0 :(得分:1)
您可以尝试这样的事情:
$o = New-Object -ComObject "My.ComObject"
# Extract all enum values from My.ComObject and store them in $enums
$enums = New-Object -TypeName PSObject
$o.GetType().Assembly.GetExportedTypes() | ?{ $_.IsEnum } | %{
$e = $_
$e.GetEnumNames() | %{
$enums | Add-Member -MemberType NoteProperty -Name $_ -Value $e::($_)
}
}
$o.method($enums.EnumValue, "s", "s")
要查看分配给EnumValue的数值,请使用$enums.EnumValue.value__