marcimarc85
Goto Top

Powershell Ausgabe in Textdatei hängt immer eine Leerzeile an

Guten Morgen. Ich möchte mittels einer Powershell Abfrage eine Textdatei mit dem Ergebnis ausgeben. Jedes neue ergebnis soll an die bestehende Textdatei angehangen werden. Soweit soguit. das klappt auch alles. Das Monitoring soll diese Textdatei auslesen. Das Monitoring liest immer die letzte Zeile aus und filtert nach einem vorher definierten Suchwort . In diesem Fall [Success]. Leider wird an die Ausgabe immer eine Leerzeile angehangen. sodass das Monitoring immer meldet, dass [Success] nicht gefunden wurde.
Wie bekomme ich es hin, dass das keine leere Zeile im Logfile angehangen wird?

$server="servername"  
$port="3306"  
$time=(get-date).ToString("dd.MM.yyyy HH:mm:ss")  
$output_file="Customer_+ $port+"_check"  
$porttest=Test-NetConnection -ComputerName $server -Port $port
$port_result=($porttest).RemotePort
$server_result=($porttest).ComputerName

if (($porttest).TcpTestSucceeded -eq 'True') {  
$result="[Success] Port $port_result at server $server_result is reachable. $time"  
$result | out-file -FilePath D:\log\$output_file.log  -append

} else {
$result="[Failed] Port $port at server $server_result is not reachable. $time"  
$result | out-file -FilePath D:\log\$output_file.log  -append
} 

Wenn ich vor das -append ein -encoding Default schreibe, wird nur eine Zeile angehängt mit chionesischen Schriftzeichen. An diese Zeile wird , ohne Zeilenumbruch, immer mehr angehängt. das Monitoring erkennt diese Ausgabe aber korrekt, schreibt also z.B. hin, dass in zeile 20 [Success] gefunden wurde, obwohl es nur 13 Zeilen sind.

Das ist strange

Content-Key: 1852067154

Url: https://administrator.de/contentid/1852067154

Printed on: July 27, 2024 at 12:07 o'clock

Member: GarfieldBonn
Solution GarfieldBonn Feb 07, 2022 at 08:36:53 (UTC)
Goto Top
Him
schon mal Parameter "-NoNewline" angehangen?
ggf "-encoding utf8"

SYNTAX
    Out-File [-FilePath] <System.String> [[-Encoding] {ASCII | BigEndianUnicode | Default | OEM | String | Unicode | Unknown | UTF7 | UTF8 | UTF32}] [-Append] [-Force] [-InputObject 
    <System.Management.Automation.PSObject>] [-NoClobber] [-NoNewline] [-Width <System.Int32>] [-Confirm] [-WhatIf] [<CommonParameters>]
    
    Out-File [[-Encoding] {ASCII | BigEndianUnicode | Default | OEM | String | Unicode | Unknown | UTF7 | UTF8 | UTF32}] [-Append] [-Force] [-InputObject <System.Management.Automation.PSObject>] 
    -LiteralPath <System.String> [-NoClobber] [-NoNewline] [-Width <System.Int32>] [-Confirm] [-WhatIf] [<CommonParameters>]
Member: MarciMarc85
MarciMarc85 Feb 07, 2022 at 10:51:54 (UTC)
Goto Top
Zitat von @GarfieldBonn:

Him
schon mal Parameter "-NoNewline" angehangen?
ggf "-encoding utf8"

SYNTAX
    Out-File [-FilePath] <System.String> [[-Encoding] {ASCII | BigEndianUnicode | Default | OEM | String | Unicode | Unknown | UTF7 | UTF8 | UTF32}] [-Append] [-Force] [-InputObject 
    <System.Management.Automation.PSObject>] [-NoClobber] [-NoNewline] [-Width <System.Int32>] [-Confirm] [-WhatIf] [<CommonParameters>]
    
    Out-File [[-Encoding] {ASCII | BigEndianUnicode | Default | OEM | String | Unicode | Unknown | UTF7 | UTF8 | UTF32}] [-Append] [-Force] [-InputObject <System.Management.Automation.PSObject>] 
    -LiteralPath <System.String> [-NoClobber] [-NoNewline] [-Width <System.Int32>] [-Confirm] [-WhatIf] [<CommonParameters>]

-noNewLine klappt, allerdings wird dann wirklich alles in eine Zeile geschrieben. Bedeutet, ich muss vor die Ausgabe ein "`n" + setzen. Was auch nicht dramatisch ist. Die Ausgabe wird dann auch korrekt dargestellt (in englisch), allerdings weiterhin nicht vom Monitoring erkannt. Nu, wenn die Ausgabe in chinesisch im Logfile steht, erkennt das Monitoring (PRTG) den Suchstring. PRTG schreibt danbei für den Sensor ebenfalls eine Logdatei. diese wiederum "übersetzt" das Chinesische. Ich kanns mir nicht erklären.
Member: MarciMarc85
MarciMarc85 Feb 07, 2022 at 13:15:43 (UTC)
Goto Top
Nachdem ich die bereits erstellten Logfiles gelöscht habe und in den Scripten -encoding ascii angefügt habe, klappt es nun auch mit dem Monitoring und ohne chinesische Zeichen. Auch, wenn ich es nicht verstehe.