0

我是 .NET 和 Powershell 的新手程序员,

我有一个小型编译的 .NET DLL,它利用目录服务和 TSUserExLib 来获取 TerminalService 属性。DLL 有一个返回“IADsTSUserEx”的静态函数。我测试了 DLL,它在返回字符串时可以工作,但是是否可以将 IADsTSUserEx 类\对象类型返回给 powershell?当我从 powershell 执行静态函数时,我什么也得不到,甚至没有。我使用以下命令进行了尝试

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

由于您的方法返回一个 COM 对象并且 PowerShell 没有直接向您公开其方法和属性,因此您需要使用反射和Type.InvokeMember方法访问它们:

$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 回答