Я создаю файл журнала ошибок. Это мой текущий код:
Add-Content -path $logpath $((get-date).tostring() + " Error " + $keyPath `
+ $value + " key " + $key +" expected: " + $policyValue `
+ "`n local value is: " +$localValue
Когда я Get-Content в файле журнала, он отображается правильно, с новой строкой перед "локальным значением".
Однако, когда я открываю файл журнала в Блокноте, он отображает все в одной строке. Как я могу заставить его вставить новую строку в текстовый файл?
Ответ 1 · рейтинг 59 · Ansgar Wiechers
`n - символ перевода строки. Блокнот (до Windows 10 ) ожидает, что разрывы строк будут закодированы как `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 · рейтинг 21 · Aaron Jensen
Вы можете использовать статическое свойство NewLine класса Environment, чтобы получить правильную новую строку:
$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 · рейтинг 14 · rchacko
Также можно назначить переменным новую строку и возврат каретки, а затем добавить их к текстам внутри скриптов PowerShell:
$OFS = "`r`n"
$msg = "This is First Line" + $OFS + "This is Second Line" + $OFS
Write-Host $msg
Ответ 5 · Heph
У меня не работали значения при использовании команды Pipe. Я создал дополнительный 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"