为什么每次都不显示GetType()的列名称标题

时间:2016-08-04 17:55:49

标签: powershell

在输出中,Get_Type()的列名称标题行仅显示一次。这是为什么?我有什么办法可以让它每次都显示在GetType()的输出中吗?

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()
"==============================="

输出。

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

2 个答案:

答案 0 :(得分:1)

您可以将值传递给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;
"==============================="

答案 1 :(得分:0)

Paweł Dyl beat me to a similar answer但我想稍微扩展一下。

PowerShell格式化程序查看它看到的第一个对象,并决定如何根据该类型显示输出。

要解决这个问题,你必须决定你真正想做什么。

首先,要了解默认情况下,该代码的输出是在管道下发送的,相当于将所有内容发送到Write-Output。例如,如果这是一个函数,那么所有这些数据都将是返回值(但不是头文件/格式化信息,如果没有对数据进行其他操作,则在函数返回后出现)。

因此,如果您按照建议使用Format-Table,它看起来会正确,但您已经从根本上改变了正在发生的事情。在函数中,您将返回格式对象;一个非常不同的事情。另外需要注意的是,即使默认格式是列表,这也总是显示表格格式。

你也可以管道到Out-String,这会给你一个默认格式的字符串表示,但你又会返回一个不同的东西:一个格式化的字符串。

你可以管道到Out-Host这也可以,但是关键的是,这些信息将返回到您的管道(来自该功能),但它会显示在屏幕。

因此,只需考虑您真正想要的以及各种选项如何影响它。