Powershell在文件中读取时保持文本格式

问题描述:

我相信这是一个简单的问题,但我无法用头围住它。我想在Windows的命令行程序中执行诊断命令。就像这样:Powershell在文件中读取时保持文本格式

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

    $message = Invoke-Expression($cmd) 

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

然后,我希望能够读取该文件,并保留原来的格式,最后发布它通过自己的API引擎收录。我试过了,但无论我做什么,我似乎都失去了格式化,这可能吗?

这是因为你的铸造。 Get-Content返回文本文件中每行包含一个字符串对象的对象数组。当你将它转换为[string]时,它将加入数组中的对象。问题是你没有指定加入对象的内容(例如换行符(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

啊,是的,这解释了它。非常感谢! – user1310856 2013-02-23 15:54:24

+2

这不适合我。这下面做了: (Get-Content test.txt)-join [环境] :: NewLine – Jens 2015-06-19 08:48:05

可能投射到一个字符串数组。与此类似,您的最后一个例子:

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

或者本作的第二个:

$message = [string[]](ipconfig) 

要读取的所有数据作为单个字符串嵌入

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

(IPconfig /all) > $file 

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

如果你有V3的换行符,他们增加了-raw参数,将完成同样的事情:

Get-Content $file -Raw 
+1

'Get-Content $ file -Raw'完美运作 – 2017-04-22 19:35:42