2009-06-11 8 views
25

Si j'ai un exe: Out.exe et son stdout est redirigé vers un fichier -à-dire:Powershell largeur colonne de sortie

out.exe > $file

En ce moment, si je fais cela, il ne sort que < --- --------------------------> 80 colonnes par ligne dans le fichier

est-il un moyen de rendre la sortie standard à être plus large dans le compte de la colonne de la console? est-il thats Out.exe déconner en quelque sorte avec les colonnes .. dans mon cas im en utilisant fxcompcmd.exe

+1

Je veux mettre à jour cette question. Il s'avère que j'essaie de sortir dans la fenêtre Visual Studio Output .. mais les fenêtres qu'il encapsule à 80 charachters .. est-il possible de le définir à plus large? – maxfridbe

Répondre

32

Je rencontré un semblable problème un certain temps. Voici ce que je l'ai fait pour y remédier:

# 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 
} 

Il définit simplement une nouvelle largeur de 500 caractères sur le tampon de sortie RawUI de l'hôte (bien que, puisque nous gérons notre construction dans plusieurs environnements, et nous ne voulions pas que le script échouer juste parce qu'il ne pourrait pas rendre la sortie un peu plus grande, le code est plutôt défensif).

Si vous exécutez dans un environnement qui définit toujours RawUI (et presque tous), le code peut être grandement simplifié:

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

Merci .. Vous êtes monsieur l'homme! – maxfridbe

+0

Ne faites pas cela lorsque vous appelez un PowerShell à partir d'une étape de construction Visual Studio. Il semble bloquer PowerShell.exe. – yzorg

+1

Faites attention lorsque vous définissez la taille car si vous définissez l'une des dimensions sur une valeur plus petite, le script sera interrompu. Cet article de blog plus ancien sur le sujet m'a causé quelques égratignures - http://weblogs.asp.net/soever/archive/2008/12/09/powershell-output-capturing-and-text-wrapping-strange-quirks- solved.aspx # 7718576 (FWIW mon commentaire est près du fond) –

9

Les deux cmdlets out-file et out-string ont un paramètre width:

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

Mais cela n'aidera pas si l'exe décide de ne sortir que 80 caractères. – JasonMArcher

0

Dans mon script Powershell je mis la première ligne de ne pas faire le retour chariot la deuxième ligne j'ai manuellement fait un retour.

(dans une boucle)

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

Write-Host "`r" 

Ce passé outre la question d'avoir ma ligne enveloppé, mais faire encore un retour après chaque enregistrement.

+0

Je crois que le problème à résoudre est d'augmenter la largeur de la fenêtre de sortie dans VS ... cela ne semble pas répondre correctement à la question. – rayryeng

0

Si vous parlez de Windows PowerShell - seulement "Propriétés> Mise en page" open Augmenter la taille de la mémoire tampon + taille de la fenêtre

enter image description here

Questions connexes