为什么“GC:”不适用于powershell

时间:2011-06-22 18:49:45

标签: powershell active-directory

我看到this link有一个VB示例代码,通过使用“GC:”绑定到全局编录服务器,然后获取它的子代,这将使GC根目录搜索GC。

Set gc = GetObject("GC:")
For each child in gc
    Set entpr = child
WScript.Echo entpr.Name
Next

我尝试过它。

但是,当我尝试将其转换为powershell时:

$gcRoot = New-Object DirectoryServices.DirectoryEntry("GC:")
$gcRoot.Children | foreach { 
                    $root = $_
                    Write-Host "GC root child: " + $root.Name
                 }

根本不起作用。 $ gcRoot没有得到任何东西。如果我试图在控制台上回应这个,我得到了这个:

[DBG]: PS <dir>$gcRoot
The following exception occurred while retrieving member "PSComputerName": "Not implemented" At :line:0 char:0

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您想使用ADSI,可以使用它(Powershell V1.0):

# Access to the RootDSE
$dn1 = New-Object System.DirectoryServices.DirectoryEntry ("GC://192.168.183.138/RootDse","administrateur@societe.fr","test.2011")
$dn1

# Access 
$dn2 = New-Object System.DirectoryServices.DirectoryEntry ("GC://192.168.183.138/dc=societe,dc=fr","administrateur@societe.fr","test.2011")
foreach ($child in $dn2.Children)
{
  $child
}

您还可以安装AD Quest Cmdlets

如果您使用的是PowerShell V2.0(在W2K8R2上),您可以使用Active-Directory模块,它提供一堆CmdLets和AD:驱动器

答案 1 :(得分:0)

在这里找到一个例子: http://www.powershellcommunity.org/Forums/tabid/54/aft/1323/Default.aspx 如果它有帮助。