2011-03-30 10 views
7

estoy tratando de encontrar la manera de eliminar los saltos de línea cuando se utiliza complemento contenidolínea de PowerShell complemento contenido rompe

echo $server "Uptime: " $uptime.days ", Days" $uptime.hours ", Hours" $uptime.minutes ", Minutes" | add-content $output_file 

Básicamente he estado tratando de obtener el tiempo de actividad de un servidor para ir a un archivo de texto y cuando hago esto la salida sale

HOSTNAME 
Uptime: 
, 2 Days 
2 
, Hours 
15 
, Minutes 

miré a esta pregunta: Powershell replace lose line breaks

también fui el uso de -append fuera archivo para agregar contenido, sin embargo, tanto producir sim resultados similares, ¿alguien puede arrojar algo de luz sobre cómo puedo eliminar los descansos?

Respuesta

10

supongo que desea tener una línea con la información, entonces:

"$server Uptime: $($uptime.days) Days, $($uptime.hours) Hours, $($uptime.minutes) Minutes" | add-content $output_file 

Si cada artículo debe estar en línea por separado, es posible añadir `n

"$server Uptime`n$($uptime.days) Days`n$($uptime.hours) Hours`n$($uptime.minutes) Minutes" | add-content $output_file 

Otra posibilidad es usar -f que a veces es más legible:

"$server Uptime: {0} Days, {1} Hours, {2} Minutes" -f $uptime.days, $uptime.hours, $uptime.minutes | add-content $output_file 

Actualización echo es alias para Write-Output (Get-Alias -name echo) que en su caso produce una matriz de objetos. Esta matriz se pasa al Add-Content; cada objeto se almacena en su propia línea.

+0

Gracias, esto funcionó bien! También me dio una mejor comprensión de lo que estaba haciendo mal. – powershellrookie

+0

Se agregó información sobre lo que causó los saltos de línea :) – stej

1

La forma más sencilla de eludir cualquier problema que PowerShell podría estar poniendo en los saltos de línea sería evitar el uso de los proveedores.

Al usar [IO.File] :: WriteAllText para escribir el archivo, debe poder evitar los saltos de línea que provienen de PowerShell. La única advertencia es que [IO.File] :: WriteAllText no comprende las rutas de PowerShell, por lo que tendrá que pasar una ruta absoluta.

Espero que esto ayude,

1

¿qué tal

[IO.File]::AppendAllText($testfile,"abc",[System.Text.Encoding]::UTF8) 
Cuestiones relacionadas