这是一个奇怪的问题。我正在尝试加载System.DirectoryServices
程序集,然后创建System.DirectoryServices.DirectoryEntry
该类的实例。
这是我正在尝试做的事情:
PS C:> [System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices")
GAC Version Location
--- ------- --------
True v2.0.50727 C:\Windows\assembly\GAC_MSIL\System.DirectoryServices\2.0.0.0__b03f5f7f11d50a3a\System.Directo...
它似乎已经很好地加载了程序集,但是现在当我尝试实例化一个新对象时它失败了:
PS C:\> $computer = new-object [System.DirectoryServices.DirectoryEntry]("WinNT://localhost,computer")
New-Object : Cannot find type [[System.DirectoryServices.DirectoryEntry]]: make sure the assembly containing this type
is loaded.
At line:1 char:23
+ $computer = new-object <<<< [System.DirectoryServices.DirectoryEntry]("WinNT://localhost,computer")
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand
但是,如果我尝试以稍微迟钝的方式进行操作,它似乎可以工作。
$directoryServices = [System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices")
$directoryEntryType = $directoryServices.GetType("System.DirectoryServices.DirectoryEntry")
$machine = New-Object $directoryEntryType("WinNT://localhost,computer")
$machine
它表明我已经成功创建了对象:
distinguishedName :
Path : WinNT://localhost,computer
这样做的正确方法是什么?我究竟做错了什么?