tuxhunt3r
Goto Top

Powershell - Im Logfile wird nach jedem Zeichen ein Leerschlag eingefügt

Hallo ans Forum

Ich will mit der PowerShell einige Strings und Variableninhalte an eine Textdatei anfügen.
Das Ganze sieht so aus:
$User = $Env:Username
$Zeit = get-date -format 
$Computer = $Env:Computername
"__________" | out-file -filepath \\server\share$\log.txt -append  
$User | out-file -filepath \\server\share$\log.txt -append
$Zeit | out-file -filepath \\server\share$\log.txt -append
$Computer | out-file -filepath \\server\share$\log.txt -append

Der Inhalt des Textfiles sollte dann so aussehen:
__________
Username
2007-12-10T22:25:55
Computername
__________
Username
2007-12-10T22:25:57
Computername
__________
Username
2007-12-10T22:25:59
Computername
__________
Username
2007-12-10T22:26:10
Computername
__________
Username
2007-12-10T22:26:20
Computername

Dies tut er aber nicht, der Inhalt des Textfiles sieht so aus:
_ _ _ _ _ _ _ _ _ _ 
 
 u s e r n a m e 
 
 2 0 0 7 - 1 2 - 1 0 T 2 2 : 4 5 : 1 9 
 
 C O M P U T E R 
 
 _ _ _ _ _ _ _ _ _ _ 
 
 u s e r n a m e 
 
 2 0 0 7 - 1 2 - 1 0 T 2 2 : 4 7 : 5 9 
 
 C O M P U T E R 
 

Irgendwie flickt es zwischen jedes Zeichen einen Leerschlag rein....
Kann sich das jemand erklären, rsp. einen Lösungsvorschlag anbieten?

Grüsse aus der Schweiz
TuXHunT3R

PS: Effekt tritt mit Notepad und Wordpad auf......

Content-ID: 75682

Url: https://administrator.de/forum/powershell-im-logfile-wird-nach-jedem-zeichen-ein-leerschlag-eingefuegt-75682.html

Ausgedruckt am: 21.03.2025 um 17:03 Uhr

58502
58502 10.12.2007 um 23:28:10 Uhr
Goto Top
Das sieht nach Unicode aus. Lade die Datei mal als Unicode und speichere sie als Text (Ansi).
TuXHunt3R
TuXHunt3R 10.12.2007 um 23:43:55 Uhr
Goto Top
Das war es. Ich hab nicht beachtet, dass die PowerShell mit dem out-file CMDLet standardmässig Unicode schreibt. Folgende Codezeilen habe ich angepasst:
"__________" | out-file -filepath \\server\share$\log.txt -append  
$User | out-file -filepath \\server\share$\log.txt -append
$Zeit | out-file -filepath \\server\share$\log.txt -append
$Computer | out-file -filepath \\server\share$\log.txt -append

Diese sehen nun so aus:
"__________" | out-file -filepath \\server\share$\log.txt -encoding Default -append  
$User | out-file -filepath \\server\share$\log.txt -encoding Default -append
$Zeit | out-file -filepath \\server\share$\log.txt -encoding Default -append
$Computer | out-file -filepath \\server\share$\log.txt -encoding Default -append

Durch die Angabe von "-encoding Default" übernimmt das out-file CMDlet den Standard-Zeichensatz des Systems, sprich Ansi.

Herzlichen Dank, das Problem ist hiermit gelöst.