1 Standorte und Dienste

 

Dieses Kapitel ist im Aufbau

Beispiel 1: Verbinden auf eine bestimmte Site

$rootDSE = [ADSI]"LDAP://rootDSE"
$siteName =  "Default-First-Site-Name"

$configNCDN = $rootDSE.ConfigurationNamingContext
$siteContainerDN = ("CN=Sites," + $configNCDN)
$siteDN = "CN=" + $siteName + "," + $siteContainerDN
[ADSI]"LDAP://$siteDN" | select * 

Zur näheren Erklärung der [ADSI]-Query schaut bitte etwas weiter unten im Kapitel 5.1

 

Beispiel 2: Auflisten aller Sites

$rootDSE = [ADSI]"LDAP://rootDSE"
$configNCDN = $rootDSE.ConfigurationNamingContext
$siteContainerDN = ("CN=Sites," + $configNCDN)
$ds=([ADSI]"LDAP://$siteContainerDN")
$ds.children | select -expand name

Zur näheren Erklärung der [ADSI]-Query und der Children-Eigenschaften schaut bitte etwas weiter unten im Kapitel 5.1

 

Beispiel 3: Auflisten der IP-Adressen einer Site

$rootDSE = [ADSI]"LDAP://rootDSE"
$siteName =  "Standort1"

$configNCDN = $rootDSE.ConfigurationNamingContext
$siteContainerDN = ("CN=Sites," + $configNCDN)
$siteDN = "CN=" + $siteName + "," + $siteContainerDN
[ADSI]"LDAP://$siteDN" | select -expand siteobjectBL


Beispiel 4: Erstellen eines neuen Subnetzes und Zuweisen zu einer Site

$subnet="192.168.9.0/24"
$sitename="Standort2" #muss vorhanden sein
$location="Lokation"
$description="Description"

$RootDSE = [ADSI]"LDAP://RootDSE"
$ConfigurationNC = $RootDSE.configurationNamingContext
$SubnetRDN = "CN=$($Subnet)"
$SiteNameRDN = "CN=$($SiteName)"

$SiteDN = "$($SiteNameRDN),CN=Sites,$($ConfigurationNC)"

$SubnetsContainer = [ADSI]"LDAP://CN=Subnets,CN=Sites,$($ConfigurationNC)"

$NewSubnet = $SubnetsContainer.Create("subnet","CN=$subnet")
$NewSubnet.Put("siteObject", $SiteDN)
$NewSubnet.Put("description", $Description)
$NewSubnet.Put("location", $Location)
$NewSubnet.SetInfo()


Beispiel 5: Auffinden der Site eines Domaincontrollers
Set-StrictMode -Version "2.0"
Clear-Host

$SearchServer = "DC01"
$SearchServer += "*"

$Sites = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Sites           
Foreach ($Site in $Sites) {           
  $Servernames =@()
  $ServersInSite = @()
 
  $ServersInSite = $Site | Foreach {$_.Servers}
  Try{
     $Servernames = $ServersInSite | Foreach{$_.Name}
  }Catch{
     #"$($Site.Name) has no Servers"   
  }#catch
 
  If ($ServerNames -like ($SearchServer)){  
       Write-Host "$($Site.Name) contains $SearchServer"
  }    
}#for
#mögliche Ausgabe

SiteABC contains DC01

 


Sofern der Domaincontroller noch aktiv arbeitet, kann man diese Aufgabe mit den üblichen Commandlinetools etwas einfacher erledigen, etwa mit:

"nltest /dsgetsite /server:DC01.myDomain.myRoot.intern"


Beispiel 6: Anzeige aller preferred Bridgehadserver im Forest

Set-StrictMode -Version "2.0"
Clear-Host
 
$Root = [ADSI]"LDAP://RootDSE"
$DomainDN = $Root.rootDomainNamingContext
  
([ADSI]"LDAP://CN=IP,CN=Inter-Site Transports,CN=Sites,CN=Configuration,$DomainDN").BridgeheadServerListBL

 

 

Beispiel 7: Übersicht über alle Sites im Forest

http://msdn.microsoft.com/en-us/library/System.DirectoryServices.ActiveDirectory.ActiveDirectorySite%28v=vs.110%29.aspx

Set-StrictMode -Version "2.0"
Clear-Host
 
Function Main{
 
  $CsvExportPath = "c:\temp\sites.csv"
  $ForestName =  $([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).RootDomain
  
  $SiteNames = Get-AllSites
   
  $Context = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext("Forest",$ForestName)
  $Forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetForest($Context)
 
  $AllSites = @()
  Foreach($Sitename in $SiteNames){
     [psobject]$Site = "" | Select-Object Name, AdjacentSites, BridgeheadServers, Domains, Servers, Sitelinks,Subnets,PreferredRPCBridgeheadservers
     $ThisSite = [System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::FindByName($context,$SiteName)
     $Site.Name = $ThisSite.Name
     $Site.AdjacentSites = @($ThisSite.AdjacentSites).count
     $Site.BridgeheadServers = @($ThisSite.BridgeheadServers).count
     $Site.Domains = @($ThisSite.Domains).count
     $Site.Servers = @($ThisSite.Servers).count
     $Site.Sitelinks = @($ThisSite.Sitelinks).count
     $Site.Subnets = @($ThisSite.Subnets).count
     Try{
       $Site.PreferredRpcBridgeheadServers = @($ThisSite.PreferredRpcBridgeheadServers).count
     }Catch{
       $Site.PreferredRpcBridgeheadServers = 0
     }   
     $Site | ft -auto
     $AllSites += $Site
   } #Foreach  
   Clear-host
   $Allsites | ft -auto
   $Allsites | Export-Csv -Path $CsvExportPath -Delimiter ";" 
   
}#function
 
Function Get-AllSites{
 
  $rootDSE = [ADSI]"LDAP://rootDSE"
  $configNCDN = $rootDSE.ConfigurationNamingContext
  $siteContainerDN = ("CN=Sites," + $configNCDN)
  $ds=([ADSI]"LDAP://$siteContainerDN")
  $sites = @($ds.children | select -expand name)
  Return ,$sites
}
 
Main