2010-11-05 8 views
5

Desidero aggiungere un numero di dati a un file esterno a Write-Verbose. Ecco come lo sto facendo.Write-Verbose output che non si sovrappone alla larghezza del comando in PowerShell

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

Questa grande opera, tranne che l'uscita è automatica avvolto alla larghezza standard di una console, questo rende il look di registro assolutamente terribile.

ho trovato una soluzione qui link morto rimosso , ma è così coinvolti e complicato che io non voglio buttare questo nel mio script di seguito un commento #Thar be dragons.

C'è un modo migliore per farlo?

+0

Per il relativo problema di Prevent involucro in _tutto_ output dettagliato, non solo da chiamate esplicite a 'Write-Verbose', vedi [questa domanda] (http://stackoverflow.com/q/41504786/45375) . – mklement0

risposta

5

Ecco una soluzione molto semplice basata su Write-Host che non presenta questo problema. All'inizio della sessione di installazione/dot-source la sostituzione di quello predefinito 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' 
    } 
} 

Allora questo funziona in base alle esigenze:

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

Cioè: si prende in considerazione $VerbosePreference, scrive a host in giallo, l'output del trascritto non viene spostato e viene ancora contrassegnato con 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

Si potrebbe anche voler decorare il parametro per supportare il pipelining '[Parametro (Posizione = 0, Obbligatorio = $ true, ValueFromPipeline = $ true)]' –

Problemi correlati