脚本宝典收集整理的这篇文章主要介绍了Windows Powershell导出管道结果,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
可以将管道的结果转换成文本输出,默认是Out-Default。可以通过Get-Command -verb out查看Powershell都有哪些输出的命令。@H_406_1@
CommandTyPE Name DefinITion
----------- ---- ----------
Cmdlet Out-Default Out-Default [-inputObject ]
Cmdlet Out-File Out-File [-FilePath] [[-Encoding]
Cmdlet Out-GridView Out-GridView [-InputObject ]
Cmdlet Out-Host Out-Host [-Paging] [-InputObject ]
Cmdlet Out-Null Out-Null [-InputObject ] [-Verbose]
Cmdlet Out-printer Out-PRinter [[-Name] ] [-InputObject
Cmdlet Out-string Out-String [-Stream] [-Width ]
Out-Default 将输出发送到默认的格式化程序和默认的输出 cmdlet。
Out-File 将输出发送到文件。
Out-GridView 将输出发送到单独窗口中的交互表。
Out-Host 将输出发送到命令行。
Out-Null 删除输出,不将其发送到控制台。
Out-Printer 将输出发送到打印机。
Out-String 将对象作为一列字符串发送到主机。
吸收输出结果
有的命令无论执行成功或失败都会有输出,有时不需要这些输出时可以使用 | Out-Null,这条命令的作用和 >$null 一样。尤其在函数中使用比较多,因为如果没有特别指明return 。Powershell函数会把输出结果作为函数的返回值。为了避免这种麻烦,通常在管道后加一条命令Out-Null 或 >$null吸收输出结果。
目录: C:PowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2011/12/19 17:05 ABC
PS C:PowerShell> md ABD >$null
PS C:PowerShell> md ABE | Out-Null
修改管道格式
之前讨论过,Powershell默认会在每行命令的末尾追加一条Out-Default,Out-Default默认包含了一条Out-Host,那是不是Out-Host就是英雄无用武之地了。事实上,可以通过Out-Host控制管道的版式。
Powershell不但会自动把管道结果发送到输出设备上,而且还会把管道结果转换成可读的文本。这个自动转换与Format-table有点像。但是完全依靠自动转换有时会碰到很奇怪的输出结果。
例如当单独使用Get-Service时,结果会以表格的形式输出,但是使用pwd;Get-Service时Service信息以列表形式输出。
status Name DisplayName
------ ---- -----------
Running AdobeARMservice Adobe Acrobat Update Service
Stopped AeLookupSvc Application Experience
Stopped ALG Application Layer Gateway Service
PS C:PowerShell> pwd;Get-Service
Path
----
C:PowerShell
Status : Stopped
Name : ThrEADORDER
DisplayName : Thread Ordering Server
Status : Running
Name : TrkWks
DisplayName : Distributed Link Tracking Client
第二行使用了两条命令,通过分号间隔。但是为什么Service信息会以列表显示 呢?因为经过Powershell的解释器处理,上面例子中的第二条命令会变成:
& { pwd;Get-Service} | Out-Default
Powershell在命令中没有发现特别指定的版式信息,就会尝试从第一条命令的第一个结果对象中寻找线索。并且把这种版式强加给紧接着的其它命令。
怎样避免上述问题,最好的办法就是要明确指定。
pwd;Get-Service | Out-Host
强制以文本显示
Powershell的文本转换一般发生在管道的末尾,但是如果需要对文本处理可是强制转换成文本。
目录: C:PowerShell
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2011/12/19 17:05 ABC
d---- 2011/12/19 17:06 ABD
d---- 2011/12/19 17:06 ABE
d---- 2011/11/29 18:21 myscript
-a--- 2011/12/19 11:31 500 a.htML
PS C:PowerShell> (ls | Out-String -Stream).gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Excel导出对象
管道结果导出为文本文件看起来不规整,越读起来也不方便。所以最好导出为Excel格式“csv”,这样的文件默认支持Microsft Excel程序打开,并处理。
使用这些导出命令时,切忌不要在管道中使用Format-Table,否则导出的结果不正常,自己可以测试。那怎样选择属性呢?可是使用Select-Object。
Html导出对象
Html导出对象和Excel导出大同小异。
以上是脚本宝典为你收集整理的Windows Powershell导出管道结果全部内容,希望文章能够帮你解决Windows Powershell导出管道结果所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。