2016-08-30 6 views
0

PowershellのComObjectのメソッドにEnumパラメータを渡したいと思います。問題は、このパラメータの作成方法がわからないことです。このメソッドのシグネチャは、My.ComObject.Method(EnumType、string、string)です。PowershellのComObjectのメソッドにenum値を渡す

$o = New-Object -ComObject "My.ComObject" 
$o.method([My.EnumType]::EnumValue, "s", "s") 

上記のコードは、常にTypeNotFoundExceptionをスローします。また、列挙型としてenumを指定しようとしましたが、文字列をオブジェクトに変換できないという別の例外がスローされます。

私が作成したComObjectと同じCOMアセンブリ内にある列挙型の列挙値を作成するには、何が必要ですか。

おかげ

パスカル

答えて

1

あなたはこのような何か試すことができます有望に見えた$enums.EnumValue.value__

+0

を使用し、EnumValueに割り当てられた数値を表示するには

$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") 

を、しかし、問題がありますAssemblyプロパティは、型が定義されているアセンブリではなく、mscorlibを返します。これは、オブジェクトの型がMarshalByRefObjectであるためです。実際のクラスではありません。私は何か間違っているのですか? – obivandamme

関連する問題