在输出中,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
答案 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
这也可以,但是关键的是,这些信息将不返回到您的管道(来自该功能),但它会显示在屏幕。
因此,只需考虑您真正想要的以及各种选项如何影响它。