在PowerShell中将新行写入文本文件

jtjikinw  于 2022-11-29  发布在  Shell
关注(0)|答案(6)|浏览(362)

我正在创建一个错误日志文件。这是我当前的代码:

Add-Content -path $logpath $((get-date).tostring() + " Error " + $keyPath `
   + $value + " key " + $key +" expected: " + $policyValue `
   + "`n local value is: " +$localValue

当i Get-Content在日志文件上时,它正确显示,在"本地值"前有新行。
但是,当我在记事本中打开日志文件时,它只在一行中显示所有内容。如何使它也在文本文件中插入新行?

kmbjn2e3

kmbjn2e31#

n`是换行符。记事本([prior to Windows 10](https://blogs.msdn.microsoft.com/commandline/2018/05/08/extended-eol-in-notepad/))要求换行符编码为rn(回车+换行符,CR-LF)。在某个有用的编辑器(SciTENotepad++UltraEdit-32Vim. a.)中打开该文件,然后将换行符转换为CR-LF。或者使用PowerShell:

(Get-Content $logpath | Out-String) -replace "`n", "`r`n" | Out-File $logpath
fkaflof6

fkaflof62#

您可以使用Environment class's static NewLine property来取得适当的换行:

$errorMsg =  "{0} Error {1}{2} key {3} expected: {4}{5} local value is: {6}" -f `
               (Get-Date),$keyPath,$value,$key,$policyValue,([Environment]::NewLine),$localValue
Add-Content -Path $logpath $errorMsg
lyfkaqu1

lyfkaqu13#

也可以将换行符和回车符赋给变量,然后将它们追加到PowerShell脚本内的文本中:

$OFS = "`r`n"
$msg = "This is First Line" + $OFS + "This is Second Line" + $OFS
Write-Host $msg
iaqfqrcu

iaqfqrcu4#

试试这个;

Add-Content -path $logpath @"
$((get-date).tostring()) Error $keyPath $value
key $key expected: $policyValue
local value is:  $localValue
"@
ftf50wuq

ftf50wuq5#

使用管道命令时,值不起作用。我创建了一个附加的Add-Content,其-Value为空,“”后跟原始的Get|补充一句,我是想用。

$newfile = "C:\FilePath\Newfile.txt" 
$oldfile = "C:\FilePath\Oldfile.txt"

Add-Content -Path "$newfile" -value ""
Get-Content -Path "$oldfile | Add-Content -Path "$newfile"
332nm8kg

332nm8kg6#

"Line-1$([Environment]::NewLine)`"Line-2`"$([Environment]::NewLine)Line-3"| out-File c:\Temp\abc.txt

相关问题