the - Escribir nuevas líneas en un archivo de texto en PowerShell
powershell rename files (4)
Estoy creando un archivo de registro de errores. Este es mi código actual:
Add-Content -path $logpath $((get-date).tostring() + " Error " + $keyPath `
+ $value + " key " + $key +" expected: " + $policyValue `
+ "`n local value is: " +$localValue
Cuando Get-Content
en el archivo de registro, se muestra correctamente, con la nueva línea antes de "valor local".
Sin embargo, cuando abro el archivo de registro en el Bloc de notas, muestra todo en una sola línea. ¿Cómo puedo hacer que inserte una nueva línea en el archivo de texto también?
Prueba esto;
Add-Content -path $logpath @"
$((get-date).tostring()) Error $keyPath $value
key $key expected: $policyValue
local value is: $localValue
"@
Puede usar la propiedad estática NewLine de la clase Environment para obtener la nueva línea correcta:
$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
También es posible asignar nueva línea y retorno de carro a las variables y luego anexarlas a los textos dentro de los scripts de PowerShell:
$OFS = "`r`n"
$msg = "This is First Line" + $OFS + "This is Second Line" + $OFS
Write-Host $msg
`n
es un personaje de alimentación de línea. El Bloc de notas espera que los saltos de línea se codifiquen como `r`n
(retorno de carro + avance de línea, CR-LF). Abra el archivo en algún editor útil ( SciTE , Notepad++ , UltraEdit-32 , Vim , ...) y convierta los saltos de línea a CR-LF. O usa PowerShell:
(Get-Content $logpath | Out-String) -replace "`n", "`r`n" | Out-File $logpath