Powershell_5

powershell_5 对象

终于开始到对象了,之前一直不理解这个东西,现在可以好好来看看是个啥了
这里其实可以用一个命令来查看

1
2
#获取当前的进程命令,然后导出到C:\temp\process.html文件中
get-process | convertto-html | out-file c:\temp\processes.html


从图上我们可以看到 object就是对象,也就是我们通俗来讲的行名字,在做一些筛选的时候就可以使用 管道+对象来做这个筛选

获取列名

例如前面的get-process,如果我们想要获取它的列名,就可以使用如下命令

1
get-process | get-member

那列名叫什么呢?对象标签,也可以视为是这行的属性,当然,每一行也有自己的属性

列名排序显示

根据名字排序

我们前面知道了怎么显示列名,那如果在筛选过程中得到了很多的列名,如何对这些列名进行排序呢?

1
get-process | sort-object -property name

根据名字倒序

那如果要倒序排序呢?

1
get-process | sort-object -property name -descending

根据CPU消耗倒序

当然,我们筛选可以不仅仅是依赖name这一个参数,也可以根据内存 cpu来进行排序

1
get-process | sort-object -property cpu -descending

选择列

PowerShell的输出结果,默认是按照列来输出的,我们可以使用Select-Object来选择我们想要的列

1
get-process | select-object name,cpu,id

多个管道筛选

多个管道筛选,其实也就是多个筛选条件,我们只需要在筛选条件之间加上|即可

1
get-process | select-object name,cpu,id | sort-object -property cpu -descending

动手实验

1.找出生成随机数字的cmdlet。
2.找出显示当前时间和日期的cmdlet。
3.任务#2的cmdlet产生的对象类型是什么(由cmdlet产生的对象类型是什么?)
4.使用任务#2中的cmdlet和select-object ,仅显示星期几。
5.找出可以在windows中显示已安装的补丁(hotfix)的cmdlet
6.使用任务#5的cmdlet显示已安装的补丁列表,按照安装日期对列表进行排序,并仅显示如下几列: 安装日志、补丁id、安装用户。请记住,在命令默认输出显示的列头并不一定是属性的实际名称————你需要查找实际的属性名称来确保这一点。
7.重复任务#6,但这次按照补丁描述对结果进行排序,并输出描述、补丁id、安装日期列,最终将结果保存到HTML文件。
8.从安全时间日志中显示最新的50条列表(如果安全事件裂帛啊为空,你也可以使用其他日志,比如系统或应用程序日志)。按照事件对日志进行排序,同时也按照索引排序。显示索引、时间以及每条记录的来源。将这些信息存入文本文件(不是HTML文件,而是纯文本文件)。你可以尝试使用select-object以及他们的-first或-last参数实现本任务;但请不要这么做,还会有更好的方法。同时,目前请避免使用get-winevent;可以使用一个更好的cmdlet完成本任务。

答案

  1. 1
    get-random
  2. 1
    get-date

get-date输出的是一个对象,对象类型是datetime

  1. 1
    get-date | select-object dayofweek
  2. 1
    get-hotfix
  3. 1
    get-hotfix | sort installedon | select installedon,installedby,hotfixid
  4. 1
    get-hotfix | sort description | select description,installedon,installedby,hotfixid | convertto-html -title "hotfixreport"  | out-file c:\temp\hotfixreport.html
  5. 1
    get-eventlog -logname system -newest 50 | sort timegenerated,index | select index,timegenerated,source | out-file c:\temp\elogs.txt