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"
答
可能投射到一个字符串数组。与此类似,您的最后一个例子:
$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
啊,是的,这解释了它。非常感谢! – user1310856 2013-02-23 15:54:24
这不适合我。这下面做了: (Get-Content test.txt)-join [环境] :: NewLine – Jens 2015-06-19 08:48:05