2010-11-05 12 views
5

me gustaría Write-Verbose una gran cantidad de datos a un archivo de salida. Así es como lo estoy haciendo.Write-detallado de salida que no se ajusta a la orden de ancho en Powershell

Start-Transcript -Path $TargetDir\RunUnitTests.log -Width 1000000 
Write-Verbose "five million character lines and stuff" 

Esto funciona muy bien, excepto que la salida se auto envuelto a la anchura estándar de una consola, esto hace que el registro absolutamente terrible.

he encontrado una solución aquí vínculo roto retira , pero es tan implicado y complicado que no quiero que acaba de lanzar esto en mi guión a continuación un comentario #Thar be dragons.

¿Hay una mejor manera de hacerlo?

+0

Para el problema relacionado de evitar el ajuste en _all_ salida detallada, no sólo de las llamadas explícitas a 'escritura Verbose', véase [esta cuestión] (http://stackoverflow.com/q/41504786/45375) . – mklement0

Respuesta

5

Aquí es una solución muy sencilla basada en Write-Host que no tiene tal problema. En el comienzo de la sesión de instalación/punto-fuente de la sustitución del defecto Write-Verbose:

function global:Write-Verbose 
(
    [string] 
    $Message 
) 
{ 
    # check $VerbosePreference variable 
    if ($VerbosePreference -ne 'SilentlyContinue') { 
     # do this via Write-Host 
     Write-Host "VERBOSE: $Message" -ForegroundColor 'Yellow' 
    } 
} 

Entonces esto funciona según sea necesario:

$VerbosePreference = 'Continue' 
Start-Transcript -Path .\RunUnitTests.log 
Write-Verbose ("verbose writes five million character lines and stuff. " * 20) 

Es decir: se tiene en cuenta $VerbosePreference, escribe a host en amarillo, la salida de transcripción no está envuelta y todavía está marcada VERBOSE.

********************** 
Windows PowerShell Transcript Start 
Start time: 20101105055855 
********************** 
Transcript started, output file is .\RunUnitTests.log 
VERBOSE: verbose writes ... <long line text> ... and stuff. 
********************** 
Windows PowerShell Transcript End 
End time: 20101105055855 
********************** 
+2

Es posible que tal vez desee decorar también el parámetro para apoyar la canalización '[Parámetro (Posición = 0, Mandatory = $ true, ValueFromPipeline = $ true)]' –

Cuestiones relacionadas