harachte67
Goto Top

Automatisiert auf allen DCs NETLOGN auslesen und weg schreiben

Hallo zusammen!

Ich würde gerne mit dem Befehl "Get-ADDomainController" alle Domain Controller ausfindig machen, in eine Datei schreiben und danach über eine Schleife abrufen um die Ausgabe von GCI auf dem shared Folder NetLogon in eine Text Datei pipen. Bisher bin ich wie folgt vorgegangen:

Remove-Item C:\DC-List.txt -Force
Get-ADDomainController | select HostName | Out-File C:\DC-List.txt
$Server = Get-Content C:\DC-List.txt
foreach ($Machine in $Server)
{
GCI $Server\Netlogon | Export-Csv -Path C:\DC-List_Shared-Folder.csv -NoTypeInformation -NoClobber -Encoding UTF8 -Delimiter ";" -Append
}

Irgendwie hänge ich aber an der stelle wo der Server in das Text File geschrieben wird und das mit jede menge Leerzeichen. Desweiteren findet ewr das Share nicht wenn ich die Variable verwende für den Server.

Kann mir hier vielleicht jemand helfen.

(In Verwendung: Windows Server 2008 R2 Powershell v4)

Content-ID: 286481

Url: https://administrator.de/forum/automatisiert-auf-allen-dcs-netlogn-auslesen-und-weg-schreiben-286481.html

Ausgedruckt am: 16.04.2025 um 09:04 Uhr

emeriks
emeriks 23.10.2015, aktualisiert am 28.10.2015 um 16:33:31 Uhr
Goto Top
Hi,
Du brauchst das Netlogon aber nicht von jedem DC zu kopieren, sondern nur einmal pro Domäne. An die Domänennamen kommst Du am einfachsten mit
(Get-ADForest).Domains

ran.
Und mit
foreach($D in (Get-ADForest).Domains){GCI -path ('\\' + $D + '\NETLOGON' -recurse)  
bekommst Du den Inhalt der Netlogons aufgelistet.

E.
jsysde
Lösung jsysde 24.10.2015, aktualisiert am 28.10.2015 um 16:33:21 Uhr
Goto Top
Moin.

Wie @emeriks schon schreibt, genügt es, auf einem beliebigen DC innerhalb der Domain ins NETLOGON-Share zu schreiben - das replizieren die DCs automatisch untereinander. Sollte also der Inhalt von NETLOGON auf deinen DCs voneinander abweichen, hast du definitiv ein (Replikations-)Problem!

Ergo nimmst du dir nur einen DC und schreibst dort ins NETLOGON, ohne Schleife und ohne eine Liste aller DCs zu verarbeiten.

Cheers,
jsysde
Harachte67
Harachte67 28.10.2015 um 16:29:30 Uhr
Goto Top
Habe noch mal etwas, auf den Angaben bassierend gedattelt und dabei ist folgendes heraus gekommen:

###################### start of script ######################
$Date = Get-Date -UFormat "%m-%d-%Y"  
#### cache the DC server list
Get-ADDomainController -Filter * | Format-Table -Property Name -HideTableHeaders | Out-File 'C:\temp\DC-Server-List.csv'   
#### Provide the computer name in $ServerName variable
$file = 'C:\temp\DC-Server-List.csv'  
Get-Content $file  | Foreach {$_.TrimEnd()}  | Set-Content '$file.txt'  
$ServerName = Get-Content -Path 'C:\temp\DC-Server-List.csv.txt'  
##### Script Starts Here ######
foreach ($Server in $ServerName)
{
if (test-Connection -ComputerName $Server -Count 2 -Quiet)
{GCI -path ('\\' + $Server + '\Netlogon\<additional folder>') | Where-Object Name -EQ '<file name>' | Out-File -FilePath "C:\Temp\<file name> $Date.txt" -Append}  
else
{Write-Warning '$Server seems dead not pinging'}  
}
##### open the collected information
Invoke-Item "C:\Temp\<file name> $Date.txt"  
##### delte the dc server list
Remove-Item 'C:\temp\DC-Server-List.csv' -Force  
####################### end of script #######################
122990
122990 28.10.2015 aktualisiert um 16:49:59 Uhr
Goto Top
Zitat von @Harachte67:

Habe noch mal etwas, auf den Angaben bassierend gedattelt und dabei ist folgendes heraus gekommen:
*Koppschüttel face-big-smile*
Wieso so umständlich? Das ist Powershell und kein Batch bei dem man alles erst in eine Textdatei schreibt face-big-smile...
Bei Powershell ist Piping angesagt ...
Get-ADDomainController -Filter * | %{
    if ((Test-Connection -ComputerName $_.Name -Count 2 -Quiet)){
        gci -path ('\\' + $_.Name + '\Netlogon\<additional folder>') | ?{!$_.PSIsContainer} | Out-File -FilePath "C:\Temp\<file name> $(Get-Date -UFormat "%m-%d-%Y").txt" -Append  
    }else{
        Write-Warning '$Server seems dead not pinging'  
    }
}
Der Sinn ist aber trotzdem noch fraglich ...

Gruß grexit