2013-02-23 12 views
9

Uważam, że jest to proste pytanie, ale nie mogę tego objąć. Chcę wykonywać polecenia diagnostyczne w powłoce poleceń w oknach. Tak:Powershell zachowuje formatowanie tekstu podczas czytania w pliku

$cmd = "ipconfig >> c:\test.txt" 

    $message = Invoke-Expression($cmd) 

    [String]$message = Get-Content c:\topsecret\testme.txt 

Wtedy chcę być w stanie odczytać plik i zachować formatowanie i wreszcie opublikować ją w pastebin poprzez ich API. Próbowałem, ale wydaje mi się, że tracę formatowanie bez względu na to, co robię, czy to możliwe?

Odpowiedz

20

Dzieje się tak z powodu swojej odlewu. Get-Content zwraca tablicę obiektów z obiektem tekstowym na linię w pliku tekstowym. Po przesłaniu go do [string] dołącza do obiektów w tablicy. Problem polega na tym, że nie określasz, do czego mają dołączyć obiekty (na przykład linia końcowa (backtick)n).

ipconfig >> test.txt 

#Get array of strings. One per line in textfile 
$message = Get-Content test.txt 

#Get one string-object with linebreaks 
$message = (Get-Content test.txt) -join "`n" 
+0

Ach tak, to wyjaśnia. Dziękuję bardzo! – user1310856

+2

To nie działa dla mnie. To poniżej: (Get-Content test.txt) -join [Środowisko] :: NewLine – Jens

1

Może obsadzić tablicę ciągów. Tak, na swoim ostatnim przykładzie:

$message = @(Get-Content c:\topsecret\testme.txt) 

albo to za drugim:

$message = [string[]](ipconfig) 
15

Aby odczytać wszystkie dane w jednym ciągiem z przerwami liniowych wbudowanych

$file = 'c:\testfiles\testfile.txt' 

(IPconfig /all) > $file 

[IO.File]::ReadAllText($file) 

Jeśli masz V3, dodali parametr -Surowe że będzie osiągnąć to samo:

Get-Content $file -Raw 
+1

'Plik Get-Content $ -Raw' działa idealnie –

Powiązane problemy