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

我相信这是一个简单的问题,但我无法绕过它。 我想在Windows上的命令shell中执行诊断命令。 像这样:

$cmd = "ipconfig >> c:\test.txt" $message = Invoke-Expression($cmd) [String]$message = Get-Content c:\topsecret\testme.txt 

然后我希望能够读取文件并保留格式,最后通过api将其发布到pastebin。 我尝试过,但无论我做什么,我似乎都失去了格式,这可能吗?

这是因为你的演员。 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" 

将所有数据作为单个字符串读取,并嵌入换行符

 $file = 'c:\testfiles\testfile.txt' (IPconfig /all) > $file [IO.File]::ReadAllText($file) 

如果你有V3,他们添加了-Raw参数,它将完成同样的事情:

 Get-Content $file -Raw 

也许是投射到一个字符串数组。 像这样,为你的最后一个例子:

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

或者这是第二个:

 $message = [string[]](ipconfig)