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-Key: 75682

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

Printed on: April 18, 2024 at 10:04 o'clock

Mitglied: 58502
58502 Dec 10, 2007 at 22:28:10 (UTC)
Goto Top
Das sieht nach Unicode aus. Lade die Datei mal als Unicode und speichere sie als Text (Ansi).
Member: TuXHunt3R
TuXHunt3R Dec 10, 2007 at 22:43:55 (UTC)
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.