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-ID: 1852067154

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

Ausgedruckt am: 25.11.2024 um 03:11 Uhr

GarfieldBonn
Lösung GarfieldBonn 07.02.2022 um 09:36:53 Uhr
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>]
MarciMarc85
MarciMarc85 07.02.2022 um 11:51:54 Uhr
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.
MarciMarc85
MarciMarc85 07.02.2022 um 14:15:43 Uhr
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.