year the source open newname name multiple item from files available powershell text newline

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