PowerShell 2.0 CTP Out-GridView: 在数据网格中显示信息

注:本篇文章,未在联系作者以及得到许可的情况下, 禁止以任何形式进行转载。

By:Anders      Mail:katrina520@163.com 

这篇资料文章撰写于Windows PowerShell 2.0 的CTP版本。在未来发布的Windows PowerShell2.0中这方面的资料肯能有所改变。   


 在数据网格中显示信息

正如俗语所说Windows PowerShell控制台只够让一位母亲满脸的喜欢。 (甚至在整个事件上妈妈似乎看上去有点模棱两可的)Windows command在输入数据上很强大并能很完整的展示小型数据块。然而,目前你有多个栏位的资料,并且/或者数百若干个的数据,那么,在这一点上控制台窗口开始显现出它的不足之处了。

不足之处,你说呢?有什么样的不足之处?

这是很好的开胃菜,控制台窗口采用非比例间距字体(就是从小写i不动的地方开始和大写M一样精确的占用在屏幕上) 。这使得它很难穿过窗口的宽度显示很多信息。同样地,因为缓冲区大小的限制可以限定总数来显示你的信息行,假设你运行一个脚本会输出300行。依您的设定,你或许看到的只有最后这200行。问题发生在这头100行上?那么,那些头100行已经被挤出控制台窗口的缓冲区了。


好,你们猜怎么着?但在现在看来,你不是唯一一个想要在网格中显示数据的人。如果什么都没有,Windows PowerShell团队显然也有一样的想法,这也解释了为何在2007年11月,发布新版的Windows PowerShell 2.0CTP中包含了一个以Out-GridView命名的cmdlet 。我们有一个感觉,你要问的是究竟能用Out-GridView cmdlet做什么呢?

重点

当你安装PowerShell 2.0时Out-GridView cmdlet 是自动安装的 ,然而,该cmdlet将不会做任何事情,除非你也有安装.NET Framework 3.0。如果您正在运行Windows Vista那么代表你已经安装了.NET Framework 3.0。如果您没有运行Windows Vista,那么你可以到这个网页获取更多信息。

哦,如果你不确信是哪个.NET Framework版本已经安装在你的电脑上。那么,不必担心:我们已经写了一个脚本,可以帮助您正确的识别出。


那么如何使用Out-GridView Cmdlet 呢?

图片能胜过千言万语,让我们把如何测试使用Out-GridView cmdlet 显示给你看。要做到这一点,我们可以很简单在 ----  虽然有用 ---- 使用那个Out-GridView cmdlet 命令。在这个命令上我们 Get-Service cmdlet来检索所有安装在一台电脑上的服务,我们则在该网格中显示那些数据。命令在这:

Get-Service | Out-GridView
我们告诉你们这是很简单:我们用 Get-Service 可以得到些信息以检索有关资料,然后用管道符到Out-GridView cmdlet。这里有 Out-GridView 的使用:

Out-GridView

这不算太坏,是吧?同意!在第2栏中塞进了少量的文本,这个服务名字叫什么? AudioEndpoi ,类似这样的东西。但是,嘿,这是命中注定就是这样的,对吗?毕竟,即使是当你在控制台窗口中运行你的脚本的全部服务名,也是不能全部显示的(当然这是对你的控制台窗口设置的问题)

Status   Name               DisplayName
------     ----                 -----------
Running  AeLookupSvc        Application Experience
Stopped  ALG                Application Layer Gateway Service
Running  Appinfo            Application Information
Running  AppMgmt            Application Management
Running  AudioEndpointBu... Windows Audio Endpoint Builder
Running  Audiosrv           Windows Audio
Running  BFE                Base Filtering Engine
Running  BITS               Background Intelligent Transfer Ser...


你赢得了一些东西,你就会失去一些东西。

不过现在看来,然而,这是赢得的少部分东西,不过在PowerShell网格中有样很酷的东西就是可以调整栏目大小。需要控制第2栏的标题宽度?然后只需很简单的点击Name标题和DisplayName标题中间的分隔符并且把块拖拉到右边来调整分栏的大小。(是的,就像你在Excel里操作一样):

Out-GridView Resizing

啊,现在,我们看到的这是AudioEndpointBuilder服务。

调整分栏大小;这些未必可能在PowerShell远程和空间容貌上引起注意,但是他恰好可以很有用的控制。多宣传,为新powershell功能,如远程访问和runspaces ,但他们只可能每一点有用的。


排序数据

让我们试试别的。在默认情况下,用 Get-Service cmdlet 来排序Name属性的服务信息。这不错,但假如我们真正想要做的是排序DisplayName属性的服务信息。再次声明,这没什么大不了的,毕竟,我们可以重新运行我们的Get-Service 命令,同时小心在DisplayName标题之前关闭排序数据。

或者,我们可以简单地点击这个DisplayName的分栏标题。点击一次分栏标题和整个网格后就会加以整理,由该栏,排列。点击第二次分栏和网格后将降序整理排列。看看我们的点击后的网格,我们点击DisplayName的标题分栏:

Out-GridView Column Sort

留心一下,你只能排序单个的分栏。例如刚刚我们显示给你看的,那很不错:我们想要排序单个的分栏。但假设我们想要排序的所有服务,先status然后再Display Name?我们可以直接在网格中这样做?不,不幸的是,我们不能这样做。如果你想要排序的两个或两个以上的组,那么你可以用排序的数据,然后再管道 Out-GridView,象这样:

数据分类

Get - Service  |  Sort - Object Status, DisplayName  |  Out - GridView

另一件很酷的事情,你可以在PowerShell网格分栏标题上分类显示任何信息。你所有要做的只是右键点击标题然后选择(切换)群组显示。举例来说,如果我们右键单击状态栏,并选择群组显示,我们将得到类似这样的输出(括号中的数字表明,在每一组有多少项目) :

Out-GridView Grouping


这很酷。但是,如果你真正希望在每个组看到个别服务?嘿,没问题。只要简单的处于每个组标题左边点击扩大/缩小箭头,点击旁边的箭头标签Stopped你应该可以看到类似这样的:

Out-GridView Expand/Contract Group


如果你有一天疲倦的在分组上浏览信息,嗯,那么第二次你不得不点击右键选择 (切换)群组显示。由于单词切换显示,这将使分类关闭。第三次右击并选择(切换)群组显示。将它关闭 - 嗯,我们能够坐在这里触发分类和关闭一整天。不过,我们仍然有一些更多的功能涵盖的范围。

数据过滤

该PowerShell网格还包括一个最起码的过滤功能。只显示了这些服务的返回数据包括指定关键字,你所要做的只是在文本框中键入指定的关键字,然后按下Enter键。这个时刻,你这样做,该网格将过滤掉任何组项,不包括关键字中至少有一栏。举例来说,这里我们键入network关键字后然后按下回车:

Out-GridView Filtering

漂亮,哈?但是他获得恰当好处。举例来说,我们可以很简单的指明某一特定栏显示更多详细的信息。在Name属性里包括了network关键字?然后键入想要的标题名然后冒号和一个关键字,象这样:
 
name:network

注意这个,这个关键时刻,我们只是返回了单个服务信息。为什么呢?因为我们只有一个服务在名称中有network字符串:

Out-GridView More Filtering

只需要删除资料之后就可以清理过滤,在搜索框中并按下Enter键。

数据保存

之前你问,这个答案是否定的:你不能保存从网格本身的数据。 (它像变得更酷,但目前还没有办法做到这一点),但下面有个安慰奖金。假设你运行这个命令,检索服务数据,然后保存数据为XML文件,命名为C:/Scripts/Test.xml:
 
Get - Service  |  Export - CliXML C:/Scripts/Test.xml

大不了,你说呢?你想两全其美的办法:数据显示在网格和数据中保存可供以后使用。眼下,你得到的数据保存为了一个XML文件,你根本没有得到一个网格。

那么,也许不会很直接。但试试运行这个命令:

Import - CliXML C:/Scripts/Test.xml  |  Out - GridView

那么,当你运行这个命令的?我们不想破坏。但给它一个尝试;至少一次,那么你的惊喜应该是非常愉快的。

 

英文原文:http://www.microsoft.com/technet/scriptcenter/topics/winpsh/gridview.mspx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值