PowerShell 格式化_下

在PowerShell中有四种格式化的 Cmdlets。

Format-Table(格式化表格)

 The Format-Table cmdlet formats the output of a command as a table with the selected properties of the object in each column.

Format-List(格式化列表)

 The Format-List cmdlet formats the output of a command as a list of properties in which each property is displayed on a separate line.

把数据水平的展现到一个表中。

Format-List(格式化列表)

The Format-Wide cmdlet formats objects as a wide table that displays only one property of each object.

用于展示一个宽列表,它仅展示要给单独属性的值,所以它的-property参数仅接受一个属性名,而不是列表,并且不接受通配符。

Get-Process | Format-Wide name -col 6

col参数的作用是让结果以多少列的形式显示出来。

定制列和列表记录

在这一节中,我们将展示如何使用哈希表结构来添加对象自定义属性。

我们甚至可以使用更复杂的数学表达式来代替:

Get-Process |
>> Format-Table Name,
>> @{l='VM(MB)';exp={$_.VM/1MB -AS [int]}} -AutoSize

输出到文件,打印机或者主机

一旦对象被格式化,你必须决定结果的去向。

如果以“Format-cmdlet” 结束,格式化指令将按照“Format-Cmdlet” 的“Out-Default” 创建,也就是以“Out-Host“显示结果到显示屏。

另外一个输出:网格

”Out-GridView“提供了另一种有用的输出功能。不过这并不是技术上的格式化,其实”Out-GridView“完全绕过了格式化子系统。它不需要调用”Format-“ cmdlets, 不产生格式化指令,没有文本结果输出到控制台窗口,”Out-GridView“比接受format-cmdlet 的输出,仅接收其他cmdlets输出的对象。

 

常见误区:

切记:format right。 你的format-cmdlets 应该是out-file 或者out-printer 作仅有表达式时的民工的最后一个命令。

因为format-cmdlets 产生格式化指令,仅有 out-cmdlet 能够合理的处理这些指令,如果一个format- cmdlet 作为命令行的结尾,指令将使用”out-default“ (总为管道的结尾)即指向out-host ,这将致非预期的结果。

一次一个对象

格式化系统先在管道中查找第一个对象,然后使用定义的格式处理这个对象,如果管道包含两个或以上的对象,那么结果可能不是你想要的那样。

比如:get-process;get-service

分号允许我们把两个命令合并在一个命令中,而不是把第一个命令的输出以管道形式传递给第二个命令。这意味着两个命令时单独运行的,但是会把他们的输出传到相同的管道中。

运行上述命令会发现第一个命令的输出是正常的,而第二个命令的输出结果却不是预期的(以列表的形式显示)。

看来PowerShell系统并不用于把多个对象和结果按照我们所期望的形式进行合并。

 

猜你喜欢

转载自blog.csdn.net/weixin_42545594/article/details/82178081