PowerShell keep text formatting when reading in a file

≯℡__Kan透↙ 提交于 2019-11-28 03:09:45

问题


I believe this is a simple question, but I can't wrap my head around it. I want to do diagnostic commands in command shell on Windows. Like this:

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

   $message = Invoke-Expression($cmd)

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

Then I want to be able to read the file and keep the formatting and lastly publish it to pastebin via their API. I've tried, but I seem to lose the formatting no matter what I do. Is this possible to do?


回答1:


This happens because of your casting. Get-Content returns an object array with a string object per line in the textfile. When you cast it to [string], it joins the objects in the array. The problem is that you don't specify what to join the objects with (e.g. 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:


To read all the data as a single string with the line breaks embedded

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

(IPconfig /all) > $file

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

If you have V3, they added the -Raw parameter that will accomplish the same thing:

Get-Content $file -Raw



回答3:


Cast to an array of strings, maybe. Like this, for your last example:

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

Or this for the second one:

$message = [string[]](ipconfig)


来源:https://stackoverflow.com/questions/15041857/powershell-keep-text-formatting-when-reading-in-a-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!