2016-08-04 11 views
0

In der Ausgabe wird die Kopfzeile der Spaltennamen von Get_Type() nur einmal angezeigt. Warum das? Was kann ich tun, damit es jedes Mal in der Ausgabe von GetType() angezeigt wird?Warum wird das Spaltennamensbanner von GetType() nicht jedes Mal angezeigt

PS C:\src\ps> Get-Content .\mva.ps1 
$items = "Doug", "Finke", "NY", "NY", 10017 
$FirstName, $LastName, $Rest = $items 

$FirstName 
$FirstName.GetType() 
"===============================" 
$LastName 
$LastName.GetType() 
"===============================" 
$Rest 
$Rest.GetType() 
"===============================" 

Der Ausgang.

PS C:\src\ps> .\mva.ps1 
Doug 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  String         System.Object 
=============================== 
Finke 
True  True  String         System.Object 
=============================== 
NY 
NY 
10017 
True  True  Object[]         System.Array 
=============================== 
PS C:\src\ps> $PSVersionTable.PSVersion 

Major Minor Build Revision 
----- ----- ----- -------- 
5  0  10586 494 

Antwort

1

können Sie Werte übergeben an Format-Table (ft):

Get-Content .\mva.ps1 
$items = "Doug", "Finke", "NY", "NY", 10017 
$FirstName, $LastName, $Rest = $items 

$FirstName; 
$FirstName.GetType() | ft; 
"===============================" 
$LastName; 
$LastName.GetType() | ft; 
"===============================" 
$Rest; 
$Rest.GetType() | ft; 
"===============================" 
0

Paweł Dyl beat me to a similar answer aber ich will auf sie ein wenig erweitern.

Der PowerShell-Formatierer betrachtet das erste Objekt, das er sieht, und entscheidet, wie die Ausgabe basierend auf diesem Typ angezeigt wird.

Um das zu umgehen, müssen Sie entscheiden, was Sie eigentlich tun möchten.

Zuerst verstehen, dass standardmäßig die Ausgabe dieses Codes in der Pipeline gesendet wird, das Äquivalent von dem Senden aller an Write-Output. Wenn dies zum Beispiel in einer Funktion ist, sind alle diese Daten der Rückgabewert (aber NICHT die Header/formatierten Informationen, die nach der Rückkehr der Funktion entstehen, wenn nichts anderes mit den Daten getan wird).

Also wenn Sie Format-Table wie vorgeschlagen verwenden, wird es richtig aussehen, aber Sie haben grundlegend geändert, was passiert. In einer Funktion würden Sie Formatobjekte zurückgeben. eine ganz andere Sache. Eine andere Sache zu beachten ist, dass dies immer ein Tabellenformat zeigt, auch wenn das Standardformat eine Liste wäre.

Sie könnten auch eine Pipeline an Out-String, die Ihnen eine Zeichenfolgendarstellung des Standardformats geben würde, aber wieder geben Sie eine andere Sache zurück: eine formatierte Zeichenfolge.

können Sie Rohr Out-Host und dies wird auch funktionieren, aber kritisch, diese Informationen nicht auf Ihre Pipeline (von der Funktion) zurückgeführt werden, aber es wird auf dem Bildschirm angezeigt werden.

Also überlegen Sie, was Sie wirklich wollen und wie die verschiedenen Optionen das beeinflussen.

+0

Wenn die Ausgabe-Pipeline eine 'System.Reflection.TypeInfo' enthielt, entschied sich etwas dafür, die Header-Zeilen zu schreiben. Wenn die folgenden 'System.Reflection.TypeInfo'-Objekte angezeigt werden, werden die Kopfzeilen nicht ausgeschrieben. Warum das erste Mal und nicht die anderen? – lit

+0

Ich bin immer noch interessiert zu wissen, warum die Header das erste Mal herauskam und nicht die anderen. – lit

Verwandte Themen