Powershell 学习: 对象,数据的另一个名称

如果说对象像一个表,而powershell 仅仅在屏幕上展示表的一部分,如果你想知道对象的更多内容(相当于表的每一个列),你可以通过命令:get-member (Alias: gm) 来获取。

当一个命令产生一个对象集合时,整个集合一直到管道末尾之前都可以被访问。在最后以一个命令运行完之前,powershel 都不会将对象的标签或属性过滤掉。

例如运行 Get-Process | gm

当Get-Process 运行之后,Gm 可以完整的访问进程对象的属性和方法,因为该命令还未被过滤用于显示。Gm会查看每一个对象,并构建一个包含对象属性方法的列表。

在命令结束之前总是对象的形式

Powershell 管道在最后一个命令执行之前总是传递对象, 在最后一个命令执行时,Powershell 会查看管道中所包含的对象,并根据不同的配置文件决定显示哪些属性在屏幕上。

在一个命令行中,管道可以包含不同类型的对象, 如:  Get-Process | Sort-Object vm -Descending | Out-File c:\procs.txt

 Get-Process |

Sort-Object vm -Descending |

Out-File c:\procs.txt

首先运行 Get-Process, 该命令将进程对象放入管道。

在下一个命令Sort-Object 中,并不会改变管道中的内容,仅仅改变了对象的顺序,一直到该命令结束,管道中依然时进程对象。

最后一个命令Out-File, 在这里,Powershell 生成输出结果,也就是管道中所包含的内容 -- 进程对象,并将结果按照一定的格式存入指定的文件。

 

再比如:Get-Process | Sort-Object vm -Descending | Select-Object Name, Id, VM

Get-Process |

Sort-Object vm -Descending |

Select-Object Name, Id, VM

首先运行 Get-Process, 该命令将进程对象放入管道。

在下一个命令Sort-Object 中,并不会改变管道中的内容,仅仅改变了对象的顺序,一直到该命令结束,管道中依然时进程对象。

在运行Select-Object时, 他并不会删除你不需要的列(属性)来减少属性列表,因为这样的话,结果就不再是进程对象了。 Select-Object会创建一个PSObject 的自定义对象,Powershell使用这个对象将所需要挑选出来的属性从进程对象中复制出来,结果是自定义对象被放入管道。

Powershell 发现光标已经到达命令行结尾时,必须知道如果处理输出结果,因为管道中的对象不再是进程对象,而是PSObject. 然而微软并没有为PSObject提供任何规则或配置,因此产生表的形式并不一定美观。

你可以通过GM命令来查看管道中不同的对象, Get-Process | Sort-Object vm -Descending | Select-Object Name, Id, VM | gm

因为在运行gm之前,管道中不再是进程对象,而是另外一种类型的对象,包含了: Name, Id, vm 以及另外一些由系统生成的成员。

Note: 你可以在任何命令的结尾添加Gm 命令,单是有些命令运行结束之后并不会产生结果,因此将 |gm 放置在命令结尾并不会有结果输出。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值