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)