Leerzeile aus Powershell-Ausgabedatei rauskriegen

Werniman

Grünschnabel
Hallo!
Ich muss gleich am Anfang erwähnen, dass ich mit der Powershell bisher nie viel am Hut hatte, aber manchmal lässt es sich halt nicht vermeiden.
Ich möchte eine kleine Anzahl von Servern per Windows Aufgabenplanung alle paar Minuten auf ihre Erreichbarkeit prüfen und bei Nicht-Erreichbarkeit eine Ausgabe der Uhrzeit und der betroffene IP in eine Datei schreiben lassen.

Dazu nutze ich das folgende kleine Script:

GC C:\Users\m.jahn\Desktop\ServerIP.txt | %{
If (Test-Connection $_ -Quiet -Count 2){
Write-Output "$_ is UP"
}
Else{
Get-Date | Out-File C:\Users\m.jahn\Desktop\Fail.txt -append
Write-Output "$_ is Down" | Out-File C:\Users\m.jahn\Desktop\Fail.txt -append
}
}


Wie ihr seht, liest es eine Textdatei auf dem Desktop aus, in der die IPs gelistet sind und "pingt" die der Reihe nach an. Während die positiven Ergebnisse einfach nur auf dem Bildschirm ausgegeben werden, werden die erfolglosen Pings in eine Textdatei auf dem Desktop geloggt.

Mein Problem ist momentan einfach die Formatierung in der Textdatei. Denn dabei wird nach jeder neu eingefügten Zeile in der Textdatei erstmal eine Leerzeile eingefügt. Während das zwischen den einzelnen Logeinträgen ja noch ganz sinnvoll ist, ist es zwischen Datum und IP eher störend. Sprich: ich möchte
die dortige Leerzeile nicht mehr eingefügt haben. Wie kann ich das verhindern ?
Testweise hab ich mal die Umleitung für das Get-Date-Ergebnis rausgeschmissen und Get-Date und Write-Output mit Semikolon in die gleiche Zeile reingetragen (Get-Date;Write-Output "$_ is Down" | Out-File C:\Users\m.jahn\Desktop\Fail.txt -append), doch das wirkt nicht auf beide Befehle gleichzeitig. D.h. das Datum wird dann am Bildschirm und das Pingergebnis in die Datei geleitet. Es soll aber beides in der Datei landen.
 
Du meinst nicht Leerzeile, sondern Zeilenumbruch oder?

Code:
echo ((Get-Date), $_, 'is Down' -join ' ') | Out-File C:\Users\m.jahn\Desktop\Fail.txt -append
 
Zurück