我陷入了一个愚蠢的问题,我无法弄清楚如何解决。
我需要获取受信任域的所有域控制器。
通过这段代码,我得到了当前域中的所有 DCGet-ADDomainController -Filter *
有了这个,我从目标域中得到了一个 DCGet-ADDomainController -domain MyTrustedDomain -Discover
但是我怎样才能得到目标域中的所有 DC?
我陷入了一个愚蠢的问题,我无法弄清楚如何解决。
我需要获取受信任域的所有域控制器。
通过这段代码,我得到了当前域中的所有 DCGet-ADDomainController -Filter *
有了这个,我从目标域中得到了一个 DCGet-ADDomainController -domain MyTrustedDomain -Discover
但是我怎样才能得到目标域中的所有 DC?
由于缺少 AD,无法对此进行测试,但您可以尝试-Server
使用受信任域的 FQDN 的选项:
Get-ADDomainController -Filter * -Server trusted.example.com
一种不使用 AD 模块的方法:
$a = new-object 'System.DirectoryServices.ActiveDirectory.DirectoryContext'("domain", "other.domain.local" )
[System.DirectoryServices.ActiveDirectory.DomainController]::FindAll($a)
您需要成为远程域中的“经过身份验证的用户”或将用户名和密码参数添加到DirectoryContext
对象
我遇到了同样的问题,因为我经常使用多个域。我希望有一个更优雅的解决方案,但到目前为止,我想出的最好的办法就是让你的工作更进一步。
如果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 参数之前,我们只能采用一种解决方法。
此命令将列出每个域的林中的所有域控制器
(get-adforest).domains |%{get-addomaincontrollers -filter * -server $_}
来自:帮助获取-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.
Get-ADDomain -Identity <DOMAIN NAME> | select -ExpandProperty ReplicaDirectoryServers
这是我用的
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
感谢您的开始,这就是我想出的。然后我将它提供给 SharePoint 列表。
get-adtrust -Filter * | Select-object Name, Domain,ipv4Address, OperatingSystem, Site, HostName, OperatingSystemVersion | ForEach-Object{Get-ADDomainController -Filter * -Server $_.Name}
有时Powershell会增加复杂性,只需打开一个cmd提示符并输入
C:\Windows\System32\nltest.exe /dclist:[信任域]
当然,将 [trusted domain] 替换为您想要的 DC 的域的名称。