【发布时间】:2013-12-13 10:09:31
【问题描述】:
使用 PowerShell 和 System.DirectoryServices,我得到了一个如下所示的对象:
TypeName: System.__ComObject
Name MemberType Definition
---- ---------- ----------
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
ToString Method string ToString()
我能找到的所有示例代码都涉及从 PowerShell 创建新的 COM 对象,而不是包装已返回的现有对象。我怎样才能有效地处理这个对象(枚举和使用实际的属性和方法)?
注意:这个对象实际上确实有一个类型库(“ActiveDs”),但由于某种原因,我无法直接使用它,作为一个不同的问题(Loading a Type Library via PowerShell and scripting Windows Live Writer)建议应该是这样。
这是一个单行代码,展示了如何获取这样的对象:
((new-object DirectoryServices.DirectoryEntry -a '
LDAP://somedc').Properties.GetEnumerator() |?{$_.PropertyName -eq 'usnChanged' }).Value[0] | Get-Member
【问题讨论】:
-
有专门设计用于活动目录的 cmdlet。 technet.microsoft.com/en-us/library/ee617195.aspx 如果您使用这些,可能会让您的生活更轻松。
-
能否请您提供一个代码示例,返回您遇到问题的特定对象
-
很遗憾我无法安装任何新模块;否则我肯定会使用它。
-
我已经添加了一个代码示例。
-
谢谢你,现在我明白了这个问题。比尔的回答应该对你有用,我也想提供这个:stackoverflow.com/a/13475504/284111 至于为什么你不应该依赖 ActiveDs 的解释。此问题并非特定于 powershell。这只是 tlb/interop 的不足。解决方法如所述。
标签: powershell com