0

私は.NETとPowershellの初心者プログラマーです。

TerminalService属性をフェッチするためにDirectoryServicesとTSUserExLibを利用する小さなコンパイル済みの.NETDLLがあります。DLLには、「IADsTSUserEx」を返す静的関数が1つあります。DLLをテストしましたが、文字列を返すときに機能しますが、IADsTSUserExクラス\オブジェクトタイプをPowerShellに返すことはできますか?PowerShellから静的関数を実行すると、nullでさえも、何も返されません。次のコマンドを使って試してみました

Add-Type -Path "c:\temp\test.dll"
[ABC.Class1]::getTSEntry("user@domain.com")

DLLには、次のコードスニペットが含まれています。

DirectoryEntry user = result.GetDirectoryEntry();
                IADsTSUserEx tsuser = (IADsTSUserEx)result.GetDirectoryEntry().NativeObject;
                return tsuser;
4

1 に答える 1

0

Type.InvokeMemberメソッドはCOMオブジェクトを返し、PowerShellはそのメソッドとプロパティを直接公開していないため、リフレクションとメソッドを使用してそれらにアクセスする必要があります。

$entry = [ABC.Class1]::getTSEntry("user@domain.com");
$entryType = $entry.GetType();
$binder = $null;
$someMethodParameters = @('Parameter #1', 12345, 'Parameter #3');
$someMethodResult = $entryType.InvokeMember('SomeMethod', 'Public, Instance, InvokeMethod', $binder, $entry, $someMethodParameters);
$somePropertyValue = $entryType.InvokeMember('SomeProperty', 'Public, Instance, GetProperty', $binder, $entry, $null);
于 2012-03-23T17:05:23.107 に答える