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)
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)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
4 Kommentare
Neuester Kommentar
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
ran.
Und mit
bekommst Du den Inhalt der Netlogons aufgelistet.
E.
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)
E.
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
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

Zitat von @Harachte67:
Habe noch mal etwas, auf den Angaben bassierend gedattelt und dabei ist folgendes heraus gekommen:
*Koppschüttel Habe noch mal etwas, auf den Angaben bassierend gedattelt und dabei ist folgendes heraus gekommen:
Wieso so umständlich? Das ist Powershell und kein Batch bei dem man alles erst in eine Textdatei schreibt
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'
}
}
Gruß grexit