Windows Powershell对象转换成文本
Out-Default可以将对象转换成可视的文本。事实上Out-Default会首先调用Format-Table,将更多的属性默认隐藏。再调用Out-Host将结果输出在控制台上。因此下面的三组命令执行结果是相同的。
ls ls|Format-Table|Out-Host ls|Out-Default
显示隐藏的对象属性
要查看对象结果的所有属性,可是使用
ls|Format-Table*
这样因为属性和属性的内容太多可能不会显示完全,可以使用文本换行参数
ls|Format-Table*-Wrap
格式化管道结果
首先可是使用下面的命令查看所有以Format打头的命令
PSC:Powershell>Get-Command-Verbformat CommandTypeNameDefinition ------------------------- CmdletFormat-CustomFormat-Custom[[-Property] CmdletFormat-ListFormat-List[[-Property] CmdletFormat-TableFormat-Table[[-Property] CmdletFormat-WideFormat-Wide[[-Property]
Format-Custom:使用自定义视图来设置输出的格式。
Format-List:将输出的格式设置为属性列表,其中每个属性均各占一行显示。
Format-Table:将输出的格式设置为表。
Format-Wide:将对象的格式设置为只能显示每个对象的一个属性的宽表。
显示指定的属性
要显示指定的属性,你首先得知道结果对象中的属性名,例如:
PSC:Powershell>ls|Format-TableName,Length,LastWriteTime NameLengthLastWriteTime ----------------------- ABC2011/11/2317:25:53 myscript2011/11/2918:21:28 a.html675802011/11/2418:30:13 a.txt263842011/11/2420:04:31 alias120602011/11/2420:26:36
使用通配符
例如要查看当前以i打头的进程,并显示进程的名字和其它以”pe”打头,以”64″结尾的进程。
PSC:Powershell>Get-Processi*|Format-TableName,pe*64 NamePeakPagedMemorySizePeakWorkingSet64PeakVirtualMemorySi 64ze64 ---------------------------------------------------------- Idle000 IMECFMUI946176429260848054272 IMECMNT1564672532070465482752 IMEDICTUPDATE1224704457932831965184
脚本块作为属性
在Powershell中文件的Length默认以byte作为单位如果你象让它输出时以KB显示,可是考虑羡下面的方法。
PSC:Powershell>ls|Format-TableName,{[int]($_.Length/1kb)} Name[int]($_.Length/1kb) -------------------------- function.ps121 LogoTestConfig.xml0 ls.html3 name.html7
修改列标题
使用合成的属性,如果使用脚本块作为标题,看着很不爽。可以使用Lable设置。同样是上面的例子,稍作修改。
PSC:Powershell>$column=@{Expression={[int]($_.Length/1KB)};Label="KB"} PSC:Powershell>Dir|Format-TableName,$column NameKB -------------------------- function.ps121 LogoTestConfig.xml0 ls.html3 name.html
优化列宽度
因为Powershell的绝大多数输出都是实时的流模式,所以下一条结果的宽度未知,Powershell的结果会默认采用分散对齐,这样可以最大限度利用控制台的宽度,但是可以通过-auto参数对列的宽带进行优化,会将属性值的最大宽带作为每一列的宽度,对比一下吧:
PSC:Powershell>ls 目录:C:Powershell ModeLastWriteTimeLengthName --------------------------- d----2011/11/2317:25ABC d----2011/11/2918:21myscript -a---2011/11/2418:3067580a.html -a---2011/11/2420:0426384a.txt PSC:Powershell>ls|Format-Table-AutoSize 目录:C:Powershell ModeLastWriteTimeLengthName --------------------------- d----2011/11/2317:25ABC d----2011/11/2918:21myscript -a---2011/11/2418:3067580a.html