有人知道Microsoft PowerShell Active Directory模块是否调用System.DirectoryServices.AccountManagement .Net命名空间吗?或者,如果Microsoft已开源该模块,以便我自己看一下。
我试图绘制一个堆栈拓扑,突然意识到我真的不知道cmdlet(例如Get-ADUser和New-ADUser)在内部做什么,以及它们调用什么(即它们有多抽象)怎么办。
答案 0 :(得分:1)
不完全相同,但非常相似。
例如, Get-ADUser
返回一个Microsoft.ActiveDirectory.Management.ADUser
对象。将其与UserPrincipal
进行比较,您会发现它们不仅在名称空间中而且在属性等方面都是不同的。但是,仍然有很多抽象在进行,因此开销很大。
如果您担心性能,则始终可以只使用PowerShell中的.NET DirectoryEntry
。实际上,type accelerators仅用于DirectoryEntry
和DirectorySearcher
。
([adsisearcher]'samaccountname=jaap').FindOne() #DirectorySearcher
[adsi]'LDAP://CN=Jaap,OU=AdminUsers,DC=JaapBrasser,DC=Com' #DirectoryEntry