Windows Powershell导出管道结果

所属分类: 脚本专栏 / PowerShell 阅读数: 2073
收藏 0 赞 0 分享

可以将管道的结果转换成文本输出,默认是Out-Default。可以通过Get-Command -verb out查看Powershell都有哪些输出的命令。

复制代码 代码如下:

PS C:PowerShell> get-command -Verb out

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吸收输出结果。

复制代码 代码如下:

PS C:PowerShell> md ABC

    目录: 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信息以列表形式输出。

复制代码 代码如下:

PS C:PowerShell> Get-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的文本转换一般发生在管道的末尾,但是如果需要对文本处理可是强制转换成文本。

复制代码 代码如下:

PS C:PowerShell> ls . -Recurse | Out-String

 目录: 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程序打开,并处理。

复制代码 代码如下:

PS C:PowerShell> Get-Service | Export-Csv a.csv
PS C:PowerShell> .a.csv

使用这些导出命令时,切忌不要在管道中使用Format-Table,否则导出的结果不正常,自己可以测试。那怎样选择属性呢?可是使用Select-Object。

Html导出对象

Html导出对象和Excel导出大同小异。

复制代码 代码如下:

PS C:PowerShell> Get-Service | ConvertTo-Html -Title "ls result" | Out-File a.html
PS C:PowerShell> .a.html

更多精彩内容其他人还在看

Powershell学习笔记--使用正则表达式查找文件

本文介绍PowerShell中使用正则表达式的查找文件的方法,PowerShell的正则表达式与微软其它语言的正则表达式是一样的,使用非常方便。
收藏 0 赞 0 分享

Windows Powershell 介绍和安装

Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象。其可读性,易用性,可以位居当前所有shell之首。
收藏 0 赞 0 分享

Windows Powershell 自定义控制台

这篇文章主要介绍了Windows Powershell 自定义控制台,包括选项、字体、布局和颜色四个方面的自定义风格,希望对大家有所帮助
收藏 0 赞 0 分享

windows Powershell 快速编辑模式和标准模式

powershell控制台有两种模式,一个是快速编辑模式,一个是标准模式。
收藏 0 赞 0 分享

PowerShell中查找字符串位置的IndexOf函数使用实例

这篇文章主要介绍了PowerShell中查找字符串位置的IndexOf函数使用实例,例子简单明了,容易看懂,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell使用正则表达式查找字符串实例

这篇文章主要介绍了PowerShell使用正则表达式查找字符串实例,主要是对match运算符的使用介绍,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中使用正则表达式跨行匹配字符串的方法

这篇文章主要介绍了PowerShell中使用正则表达式跨行匹配字符串的方法,重点在于正则表达式的写法,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell中查看当前版本、Windows版本、.NET版本信息的代码

这篇文章主要介绍了PowerShell中查看当前版本、Windows版本、.NET版本信息的代码,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell 入门基础教程

Windows PowerShell 是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用
收藏 0 赞 0 分享

PowerShell Contains函数查找字符串实例

这篇文章主要介绍了PowerShell Contains函数查找字符串实例,Contains函数的作用是查询一个字符串中是否存在另一个字符串,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多