2009-06-11 19 views
25

Se ho un exe: Out.exe e il suo stdout viene reindirizzato a un file cioè:colonna di output Powershell

out.exe > $file

Ora se faccio questo emettere solo < --- --------------------------> 80 colonne per riga al file

c'è un modo per rendere lo standard output più ampio nel conteggio delle colonne della console? è che il thats Out.exe in qualche modo che pasticciano con le colonne .. nel mio caso im utilizzando fxcompcmd.exe

+1

Voglio aggiornare questa domanda. Si scopre che sto provando ad emettere la finestra di output di Visual Studio .. ma le finestre che avvolge a 80 caratteri ... c'è un modo per impostarlo su più ampio? – maxfridbe

risposta

32

ho incontrato un simile problema un po 'di tempo fa. Ecco quello che ho fatto per risolvere il problema:

# Update output buffer size to prevent clipping in Visual Studio output window. 
if($Host -and $Host.UI -and $Host.UI.RawUI) { 
    $rawUI = $Host.UI.RawUI 
    $oldSize = $rawUI.BufferSize 
    $typeName = $oldSize.GetType().FullName 
    $newSize = New-Object $typeName (500, $oldSize.Height) 
    $rawUI.BufferSize = $newSize 
} 

Essa stabilisce semplicemente una nuova larghezza di 500 caratteri sul buffer di uscita RawUI dell'host (anche se, in quanto si corre la nostra configurazione in diversi ambienti, e non volevamo lo script per fallire solo perché non potrebbe rendere l'output un po 'più grande, il codice è piuttosto difensivo).

Se si esegue in un ambiente che mette sempre RawUI (e la maggior parte lo fanno), il codice può essere notevolmente semplificata:

$Host.UI.RawUI.BufferSize = New-Object Management.Automation.Host.Size (500, 25) 
+1

Grazie .. Tu signore sono l'uomo! – maxfridbe

+0

Non eseguire questa operazione quando si chiama un PowerShell da un passaggio di generazione di Visual Studio. Sembra che appenda PowerShell.exe. – yzorg

+1

Fare attenzione quando si imposta la dimensione in modo che l'impostazione di una delle dimensioni su un valore inferiore causerà lo script in bork. Questo vecchio blog post sull'argomento mi ha causato un po 'di grattacapo - http://weblogs.asp.net/soever/archive/2008/12/09/powershell-output-capturing-and-text-wrapping-strange-quirks- solved.aspx # 7718576 (FWIW il mio commento è vicino alla fine) –

9

Sia i out-file e out-string cmdlet hanno un parametro width:

out.exe | out-file -width 132 -filePath $file 
+3

Ma questo non aiuta se l'exe sta decidendo di produrre solo 80 caratteri. – JasonMArcher

0

Nel mio script PowerShell ho impostato la prima linea di non fare ritorni a capo la seconda riga ho fatto manualmente un ritorno.

(all'interno di un ciclo)

Write-Host -nonewline "$var1;$var2" 

Write-Host "`r" 

che escludeva il problema di avere la mia linea, ma ancora avvolto facendo un ritorno dopo ogni singolo record.

+0

Credo che il problema in questione sia quello di aumentare la larghezza della finestra di output in VS .... non sembra che risponda correttamente alla domanda. – rayryeng

0

Se si sta parlando di Windows PowerShell - basta aprire "Proprietà> Layout" aumenta la dimensione del buffer di + finestra dimensioni

enter image description here

Problemi correlati