我陷入了一個愚蠢的問題,我無法弄清楚如何解決。
我需要獲取受信任域的所有域控制器。得到另一個域的所有ADcontroller
隨着這段代碼我得到的所有DC當前域Get-ADDomainController -Filter *
有了這個,我從目標域Get-ADDomainController -domain MyTrustedDomain -Discover
獲得一個DC,但我怎麼能得到所有DC在目標域?
我陷入了一個愚蠢的問題,我無法弄清楚如何解決。
我需要獲取受信任域的所有域控制器。得到另一個域的所有ADcontroller
隨着這段代碼我得到的所有DC當前域Get-ADDomainController -Filter *
有了這個,我從目標域Get-ADDomainController -domain MyTrustedDomain -Discover
獲得一個DC,但我怎麼能得到所有DC在目標域?
的一種方式,而無需使用AD模塊:
$a = new-object 'System.DirectoryServices.ActiveDirectory.DirectoryContext'("domain", "other.domain.local")
[System.DirectoryServices.ActiveDirectory.DomainController]::FindAll($a)
您需要成爲遠程域中的「已驗證用戶」或將用戶名和密碼參數添加到DirectoryContext
對象
不能對此進行測試,由於缺乏AD的,但你可以嘗試-Server
選項與信任域的FQDN:
Get-ADDomainController -Filter * -Server trusted.example.com
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.
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
我遇到的與我經常使用多個域一樣的問題。我希望能有一個更優雅的解決方案,但到目前爲止,我所提出的最好的解決方案是讓你的工作更進一步。
如果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參數,我們仍然使用一種解決方法。
有時Powershell的增加了複雜性,只需打開一個命令提示符,然後輸入
C:\ WINDOWS \ SYSTEM32 \ nltest.exe/dclist:信任域]
當然,替換[信任域]與你想要的DC域名。
此命令將列出在林中所有域控制器每個域
(get-adforest).domains |%{get-addomaincontrollers -filter * -server $_}
偉大的解決方案!非常感謝 – Naigel
@LorenzoC很高興幫助! –
是否有類似的方式從該域中獲取服務器而不使用AD模塊?類似於[[System.DirectoryServices.ActiveDirectory.AnyComputer] :: FindAll($ a)' – Naigel