注:本篇文章,未在联系作者以及得到许可的情况下, 禁止以任何形式进行转载。
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 的使用:
这不算太坏,是吧?同意!在第2栏中塞进了少量的文本,这个服务名字叫什么? AudioEndpoi ,类似这样的东西。但是,嘿,这是命中注定就是这样的,对吗?毕竟,即使是当你在控制台窗口中运行你的脚本的全部服务名,也是不能全部显示的(当然这是对你的控制台窗口设置的问题)










你赢得了一些东西,你就会失去一些东西。
不过现在看来,然而,这是赢得的少部分东西,不过在PowerShell网格中有样很酷的东西就是可以调整栏目大小。需要控制第2栏的标题宽度?然后只需很简单的点击Name标题和DisplayName标题中间的分隔符并且把块拖拉到右边来调整分栏的大小。(是的,就像你在Excel里操作一样):
啊,现在,我们看到的这是AudioEndpointBuilder服务。
调整分栏大小;这些未必可能在PowerShell远程和空间容貌上引起注意,但是他恰好可以很有用的控制。多宣传,为新powershell功能,如远程访问和runspaces ,但他们只可能每一点有用的。
排序数据
让我们试试别的。在默认情况下,用 Get-Service cmdlet 来排序Name属性的服务信息。这不错,但假如我们真正想要做的是排序DisplayName属性的服务信息。再次声明,这没什么大不了的,毕竟,我们可以重新运行我们的Get-Service 命令,同时小心在DisplayName标题之前关闭排序数据。
或者,我们可以简单地点击这个DisplayName的分栏标题。点击一次分栏标题和整个网格后就会加以整理,由该栏,排列。点击第二次分栏和网格后将降序整理排列。看看我们的点击后的网格,我们点击DisplayName的标题分栏:
留心一下,你只能排序单个的分栏。例如刚刚我们显示给你看的,那很不错:我们想要排序单个的分栏。但假设我们想要排序的所有服务,先status然后再Display Name?我们可以直接在网格中这样做?不,不幸的是,我们不能这样做。如果你想要排序的两个或两个以上的组,那么你可以用排序的数据,然后再管道 Out-GridView,象这样:
数据分类
另一件很酷的事情,你可以在PowerShell网格分栏标题上分类显示任何信息。你所有要做的只是右键点击标题然后选择(切换)群组显示。举例来说,如果我们右键单击状态栏,并选择群组显示,我们将得到类似这样的输出(括号中的数字表明,在每一组有多少项目) :
这很酷。但是,如果你真正希望在每个组看到个别服务?嘿,没问题。只要简单的处于每个组标题左边点击扩大/缩小箭头,点击旁边的箭头标签Stopped你应该可以看到类似这样的:
如果你有一天疲倦的在分组上浏览信息,嗯,那么第二次你不得不点击右键选择 (切换)群组显示。由于单词切换显示,这将使分类关闭。第三次右击并选择(切换)群组显示。将它关闭 - 嗯,我们能够坐在这里触发分类和关闭一整天。不过,我们仍然有一些更多的功能涵盖的范围。
数据过滤
该PowerShell网格还包括一个最起码的过滤功能。只显示了这些服务的返回数据包括指定关键字,你所要做的只是在文本框中键入指定的关键字,然后按下Enter键。这个时刻,你这样做,该网格将过滤掉任何组项,不包括关键字中至少有一栏。举例来说,这里我们键入network关键字后然后按下回车:
注意这个,这个关键时刻,我们只是返回了单个服务信息。为什么呢?因为我们只有一个服务在名称中有network字符串:
数据保存
之前你问,这个答案是否定的:你不能保存从网格本身的数据。 (它像变得更酷,但目前还没有办法做到这一点),但下面有个安慰奖金。假设你运行这个命令,检索服务数据,然后保存数据为XML文件,命名为C:/Scripts/Test.xml:
大不了,你说呢?你想两全其美的办法:数据显示在网格和数据中保存可供以后使用。眼下,你得到的数据保存为了一个XML文件,你根本没有得到一个网格。
那么,也许不会很直接。但试试运行这个命令:
那么,当你运行这个命令的?我们不想破坏。但给它一个尝试;至少一次,那么你的惊喜应该是非常愉快的。
英文原文:http://www.microsoft.com/technet/scriptcenter/topics/winpsh/gridview.mspx