我是.NET和Powershell的新手程序员,
我有一个小的编译.NET DLL,它利用目录服务和TSUserExLib来获取TerminalService属性。 DLL有一个静态函数,返回“IADsTSUserEx”。我测试了DLL,它在返回字符串时有效,但是可以将IADsTSUserEx类\ object类型返回到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;
答案 0 :(得分:0)
由于您的方法返回一个COM对象,并且PowerShell没有直接向您公开其方法和属性,因此您需要使用反射和Type.InvokeMember
method来访问它们:
$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);