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)