powershell use calculated properties

原文

  powershell 处理的一般都是对象,对象会有一些属性,但是有一些更加有用的东西是通过对象已有属性计算得来的,我们可以创建这样的属性,powershell中将其称为 calculated property。

  如何创建呢?通过 select-object 命令来,先给例子

Get-ChildItem C:Test | Select-Object Name, CreationTime, @{Name="Kbytes";Expression={$_.Length / 1Kb}}
  1. select-object 可以来选择通过管道传过来对象的属性(属性有很多,我们选取需要呈现的)
  2. 在select-object命令中通过建立一个哈希表来创建我们需要的属性
  3. 哈希表的格式为@{},里面有两个值,第一个name 对应我们创建的属性名称,第二个expression对应一个脚本段{},里面包含我们创建属性的代码,上例是将大小的现实转换为kb形式显示

命令返回如下

Name                                    CreationTime                       Kbytes
----                                    -------------                       ------
challenge.mdb                           12/17/2007 9:33:24 PM                  884
pool.mdb                                1/14/2008 8:16:15 AM                   224

  基本的用法就是这样,这个的确有很多可能性,但是前提是我们需要知道我们操作的对象的属性有什么,这个可以通过 get-menber 来查看

  最后需要说的是:select-object 会创建一个新的对象,这个对象和通过管道前get-childitem 获取到的对象已经不一样了,而我们建立的属性被当成新对象的属性

文章中还有个例子,计算文件存在时间的,有点用,如下

Get-ChildItem C:Test | Select-Object Name, @{Name="Age";Expression={ (((Get-Date) - $_.CreationTime).Days) }}

  一个小tips powershell中关于大小的转换   xxx/1kb xxx/1mb xxx/1gb 都是可以的,

原文地址:https://www.cnblogs.com/nervertoolate/p/8004842.html