Подтвердить что ты не робот

Запись новых строк в текстовый файл в PowerShell

Я создаю файл журнала ошибок. Это мой текущий код:

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

Когда я Get-Content в файле журнала, он отображается правильно, а новая строка перед "локальным значением".

Однако, когда я открываю файл журнала в Блокноте, он отображает все в одной строке. Как я могу заставить его вставить новую строку в текстовый файл?

4b9b3361

Ответ 1

`n является символом перевода строки. Блокнот ожидает, что строки будут закодированы как `r`n (возврат каретки + линия, CR-LF). Откройте файл в каком-нибудь полезном редакторе (SciTE, Notepad ++, UltraEdit-32, Vim,...) и конвертировать строки в CR-LF. Или используйте PowerShell:

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

Ответ 2

Вы можете использовать статическое свойство NewLine класса среды, чтобы получить соответствующую новую строку:

$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

Ответ 3

Также можно назначить новые строки и возврат каретки в переменные, а затем добавить их в тексты внутри сценариев PowerShell:

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

Ответ 4

Попробуйте это;

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