我是.NET和Powershell的新手程序员,powershell如何从外部加载的DLL返回类型/对象?
我有一个小的编译.NET DLL,它利用目录服务和TSUserExLib获取TerminalService属性。该DLL有一个返回“IADsTSUserEx”的静态函数。我测试了DLL,它在返回字符串时有效,但是可以将IADsTSUserEx类\ object类型返回给powershell吗?当我从powershell执行静态函数时,我什么也没有回来,甚至没有空。我试了一下使用以下命令
Add-Type -Path "c:\temp\test.dll"
[ABC.Class1]::getTSEntry("[email protected]")
这个DLL中包含此代码段:
DirectoryEntry user = result.GetDirectoryEntry();
IADsTSUserEx tsuser = (IADsTSUserEx)result.GetDirectoryEntry().NativeObject;
return tsuser;
尝试运行'[ABC.Class1] :: getTSEntry( “[email protected]”)| Get-Member'并查看显示内容。我猜并不是'getTSEntry'返回'$ null',而是PowerShell不知道如何格式化和显示'IADsTSUserEx'对象。 – BACON 2012-03-22 21:57:29
@BACON,谢谢你的回应!我尝试了你的建议,并得到以下错误:“Get-Member:没有指定对象到get-member cmdlet”。我知道这个调用正在执行,因为它会触发不存在的用户的异常。似乎它只是不知道如何处理返回对象,所以它不会返回任何内容,甚至不会返回null。即使是“[ABC.Class1] :: getTSEntry(”[email protected]“)-eq $ null”语句什么都没有 – 2012-03-23 14:44:54
无法编辑以前的评论,但也想声明“[ABC.Class1] :: getTSPath(”[email protected]“)。getType()返回一个BaseType的”System.MarshalByRefObject“和Name的” __ComObject“ – 2012-03-23 14:52:41