2013-06-28 33 views
2

我陷入了一個愚蠢的問題,我無法弄清楚如何解決。
我需要獲取受信任域的所有域控制器。得到另一個域的所有ADcontroller

隨着這段代碼我得到的所有DC當前域Get-ADDomainController -Filter *
有了這個,我從目標域Get-ADDomainController -domain MyTrustedDomain -Discover
獲得一個DC,但我怎麼能得到所有DC在目標域?

回答

3

的一種方式,而無需使用AD模塊:

$a = new-object 'System.DirectoryServices.ActiveDirectory.DirectoryContext'("domain", "other.domain.local") 
[System.DirectoryServices.ActiveDirectory.DomainController]::FindAll($a) 

您需要成爲遠程域中的「已驗證用戶」或將用戶名和密碼參數添加到DirectoryContext對象

+0

偉大的解決方案!非常感謝 – Naigel

+0

@LorenzoC很高興幫助! –

+0

是否有類似的方式從該域中獲取服務器而不使用AD模塊?類似於[[System.DirectoryServices.ActiveDirectory.AnyComputer] :: FindAll($ a)' – Naigel

4

不能對此進行測試,由於缺乏AD的,但你可以嘗試-Server選項與信任域的FQDN:

Get-ADDomainController -Filter * -Server trusted.example.com 
0

from:help get-addomaincontroller -examples

這應該列出所有DC在你的域名

--------------------------示例12 ---- ----------------------

C:\PS>Get-ADDomainController -Filter { isGlobalCatalog -eq $true -and Site -eq "Default-First-Site-Name" } 


Get all global catalogs in a given site. 
0
Get-ADDomain -Identity <DOMAIN NAME> | select -ExpandProperty ReplicaDirectoryServers 
0

這是我用

cls 

$domains = (Get-ADForest).Domains; 

foreach ($domain in $domains) 

{ 

Write-Host $domain 
(Get-ADDomain -Identity $domain | select -ExpandProperty ReplicaDirectoryServers).Count; 
Write-Host ""; 
$totalCount = $totalCount + (Get-ADDomain -Identity $domain | select -ExpandProperty ReplicaDirectoryServers).Count; 
} 

Write-Host "Total domain controller count is: "$totalCount 
1

我遇到的與我經常使用多個域一樣的問題。我希望能有一個更優雅的解決方案,但到目前爲止,我所提出的最好的解決方案是讓你的工作更進一步。

如果Get-ADDomainController -domain MyTrustedDomain -Discover爲您提供目標域中的一臺服務器,則可以將其提供給-server參數以查詢該DC。除非存在信任,否則您確實需要提供憑據來從除登錄會話之外的其他域查詢DC。

$targetdomaindc = Get-ADDomainController -DomainName MyTrustedDomain -Discover 
$targetdcname = $($targetdomaindc.hostname) 
Get-ADDomainController -Filter * ` 
    -Server $targetdcname ` 
    -Credential (Get-Credential MyTrustedDomain\username) | ft HostName 

Get-ADDomainController -Filter * ` 
    -Server $((Get-ADDomainController -DomainName MyTrustedDomain -Discover).hostname) ` 
    -Credential (Get-Credential MyTrustedDomain\username) | ft HostName 

如果你做這種事情很多的,你可以隨時存儲您的憑據重用,$cred = Get-Credential MyTrustedDomain\username)變量並保存重複的提示。密碼存儲爲System.Security.SecureString,只要您將它保存在會話中,它就會很安全。

直到Get-ADDomainController cmdlet更新爲同時允許-filter參數和Domainname參數,我們仍然使用一種解決方法。

-1

有時Powershell的增加了複雜性,只需打開一個命令提示符,然後輸入

C:\ WINDOWS \ SYSTEM32 \ nltest.exe/dclist:信任域]

當然,替換[信任域]與你想要的DC域名。

1

此命令將列出在林中所有域控制器每個域

(get-adforest).domains |%{get-addomaincontrollers -filter * -server $_} 
相關問題