PowerShell сохраняет форматирование текста при чтении в файле

Я считаю, что это простой вопрос, но я не могу обернуть голову вокруг него. Я хочу делать диагностические команды в командной оболочке Windows. Как это:

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

   $message = Invoke-Expression($cmd)

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

Затем я хочу иметь возможность прочитать файл, сохранить форматирование и, наконец, опубликовать его в pastebin через их API. Я пытался, но мне кажется, что я теряю форматирование независимо от того, что я делаю. Возможно ли это сделать?

Ответ 1

Это происходит из-за вашего кастинга. Get-Content возвращает массив объектов с строковым объектом на строку в текстовом файле. Когда вы добавляете его в [string], он соединяет объекты в массиве. Проблема заключается в том, что вы не указываете, с чем присоединиться к объектам (например, linebreak (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"

Ответ 2

Чтобы прочитать все данные как одну строку с разрывами строк, встроенными

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

(IPconfig /all) > $file

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

Если у вас есть V3, они добавили параметр -Raw, который выполнит одно и то же:

Get-Content $file -Raw

Ответ 3

Может быть, в массив строк. Например, для вашего последнего примера:

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

Или это для второго:

$message = [string[]](ipconfig)