Я перешел в компанию, которая имеет устаревшие серверы и не имеет RSAT, поэтому я не могу использовать модуль AD и должен убедиться, что сценарий соответствует версии 2.
Я написал сценарий обнаружения, чтобы найти все домены в лесу, и я пытаюсь передать его в другой сценарий, чтобы узнать все имена хостов DNS компьютеров в доменах, к которым у меня тоже есть доступ, но продолжаю получать различные ошибки.
Домены в лесу Код:
$Root = [ADSI]"LDAP://RootDSE"
$oForestConfig = $Root.Get("configurationNamingContext")
$oSearchRoot = [ADSI]("LDAP://CN=Partitions," + $oForestConfig)
$AdSearcher = [adsisearcher]"(&(objectcategory=crossref) (netbiosname=*))"
$AdSearcher.SearchRoot = $oSearchRoot
$Domains = $AdSearcher.FindAll()
return $Domains|$Domains = "dc=" + $Domains.Name.Replace(".", ",dc=") |Out-File C:\domains.txt
Код для поиска имен хостов DNS:
$doms = Get-Content C:\domains.txt
foreach ($dom in $doms) {
$AD = (([adsisearcher]"").Searchroot.path)
IF ($AD -notlike "LDAP://*") {$AD ="LDAP://$AD"}
$AD.Filter = "(&(objectCategory=Computer)(name=$item))"
$Computers = $AD.Filter.FindAll()
$ComputerNames = $Computers.Properties.dnshostname
}
Есть идеи?