2

我陷入了一个愚蠢的问题,我无法弄清楚如何解决。
我需要获取受信任域的所有域控制器。

通过这段代码,我得到了当前域中的所有 DCGet-ADDomainController -Filter *
有了这个,我从目标域中得到了一个 DCGet-ADDomainController -domain MyTrustedDomain -Discover
但是我怎样才能得到目标域中的所有 DC?

4

9 回答 9

7

由于缺少 AD,无法对此进行测试,但您可以尝试-Server使用受信任域的 FQDN 的选项:

Get-ADDomainController -Filter * -Server trusted.example.com
于 2013-06-28T12:54:45.627 回答
4

一种不使用 AD 模块的方法:

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

您需要成为远程域中的“经过身份验证的用户”或将用户名和密码参数添加到DirectoryContext对象

于 2013-06-28T12:59:49.450 回答
1

我遇到了同样的问题,因为我经常使用多个域。我希望有一个更优雅的解决方案,但到目前为止,我想出的最好的办法就是让你的工作更进一步。

如果Get-ADDomainController -domain MyTrustedDomain -Discover在目标域中为您提供一台服务器,您可以将其提供给 -server 参数以查询该 DC。如果信任不存在(在信任中,信任域认为您已“经过身份验证”),您确实需要提供凭据以从与登录会话不同的域查询 DC 。

$targetdcname = (Get-ADDomainController -DomainName <MyTrustedDomain> -Discover).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 参数之前,我们只能采用一种解决方法。

于 2015-04-08T00:34:54.350 回答
1

此命令将列出每个域的林中的所有域控制器

(get-adforest).domains |%{get-addomaincontrollers -filter * -server $_}
于 2017-04-18T15:01:04.933 回答
0

来自:帮助获取-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.
于 2013-12-17T05:05:18.317 回答
0
Get-ADDomain -Identity <DOMAIN NAME> | select -ExpandProperty ReplicaDirectoryServers
于 2014-05-14T09:17:49.290 回答
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
于 2015-02-10T14:46:52.317 回答
0

感谢您的开始,这就是我想出的。然后我将它提供给 SharePoint 列表。

get-adtrust -Filter * | Select-object Name, Domain,ipv4Address, OperatingSystem, Site, HostName, OperatingSystemVersion | ForEach-Object{Get-ADDomainController -Filter * -Server $_.Name}
于 2020-04-22T21:45:54.057 回答
-1

有时Powershell会增加复杂性,只需打开一个cmd提示符并输入

C:\Windows\System32\nltest.exe /dclist:[信任域]

当然,将 [trusted domain] 替换为您想要的 DC 的域的名称。

于 2015-07-09T21:20:52.713 回答