Powershell_5
powershell_5 对象
终于开始到对象了,之前一直不理解这个东西,现在可以好好来看看是个啥了
这里其实可以用一个命令来查看
1 | #获取当前的进程命令,然后导出到C:\temp\process.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
get-random
1
get-date
get-date输出的是一个对象,对象类型是datetime
1
get-date | select-object dayofweek
1
get-hotfix
1
get-hotfix | sort installedon | select installedon,installedby,hotfixid
1
get-hotfix | sort description | select description,installedon,installedby,hotfixid | convertto-html -title "hotfixreport" | out-file c:\temp\hotfixreport.html
1
get-eventlog -logname system -newest 50 | sort timegenerated,index | select index,timegenerated,source | out-file c:\temp\elogs.txt