在编程世界里,我们一定听说过面向对象思维,根据面向对象思维我们可以抽象的把现实世界中每一个事物都看成是一个对象,每个对象都包含自己特有的属性和方法。

而在PowerShell中任何东西也都是一种对象,我们知道对象含有它的属性和方法等信息。当我们在编写脚本的时候都会想知道我们除了生成的对象外,这个对象还能实现什么功能,什么方法。

那如何查看对象的属性等信息呢,使用Get-Member方法与管道符配合就可以用来发现指定对象的属性、方法等信息。比如我们想知道系统进程对象包含哪些属性和方法可以用,只需要像下面这样做。

PS /Users/Anders> Get-Process | Get-MemberTypeName: System.Diagnostics.ProcessName                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount
Name                       AliasProperty  Name = ProcessName
NPM                        AliasProperty  NPM = NonpagedSystemMemorySize64
PM                         AliasProperty  PM = PagedMemorySize64
SI                         AliasProperty  SI = SessionId
VM                         AliasProperty  VM = VirtualMemorySize64
WS                         AliasProperty  WS = WorkingSet64
Parent                     CodeProperty   System.Object Parent{get=GetParentProcess;}

你会看到PowerShell返回了所有与系统进程类型相关的属性和方法等信息,首先可以看到第一条信息TypeName: System.Diagnostics.Process,这表明Get-Member命令是由System.Diagnostics.Process .NET类型构建而来的。接着,我们就可以从那些返回的数据里做一些有趣的操作。比如默认情况下,当你直接键入Get-Process命令是无法查看到VirtualMemorySize虚拟内存大小的,而通过Get-Member查看对象属性后得知进程有一个属性名为VM,代表当前进程的虚拟内存大小,那我们可以像下面这样很简单的选择出VM列数据并把它显示出来。

PS /> Get-Process | Select-Object ProcessName, VMProcessName               VM
-----------               --
ForkLift          4362297344
gamed             4590047232
Google Chrome H   6911365120
Google Chrome H   6902108160
Google Chrome H   5691969536
Google Chrome H   5730803712
Google Chrome H   5683720192
hyperkit          6827827200
iBooks            5002887168
icdd              4482146304
iconservicesage   4534165504
identityservice   4506165248
imagent           4489478144
IMAutomaticHist   4482187264
IMDPersistenceA   4455772160
imklaunchagent    4485124096

Get-Member不仅仅可以查看某个命令的属性和方法,也可以查看所有命令的相关属性与方法。还记得前面说的吗,在PowerShell中所有的数据均为对象,所以我们也可以在查找某个命令功能所包含的对象属性等信息,像下面这样。

PS /> Get-Process -ProcessName "Thunder" | Get-MemberTypeName: System.Diagnostics.ProcessName                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount
Name                       AliasProperty  Name = ProcessName
NPM                        AliasProperty  NPM = NonpagedSystemMemorySize64
PM                         AliasProperty  PM = PagedMemorySize64
SI                         AliasProperty  SI = SessionId
VM                         AliasProperty  VM = VirtualMemorySize64
WS                         AliasProperty  WS = WorkingSet64
GetType                    Method         type GetType()
Kill                       Method         void Kill()

直接可以在某个命令行用管道传递到Get-Member查看包含哪些有趣的东西,(在这里我只提取了一部分数据)其中,发现有一个Kill方法,这个方法是终止当前进程,可以这样使用。

PS /> (Get-Process -ProcessName "Thunder").Kill()

我先获取了命为Thunder的进程信息,接着调用Kill方法,奖它自动关闭。

除此之外,Get-Member 还可以配合一些特定参数获得更精准更详细的信息。

# 获得对象多有可调用的静态方法
PS /> Get-Process -ProcessName "Thunder" | Get-Member -Static# 获得对象所有可调用的方法
PS /> Get-Process -ProcessName "Thunder" | Get-Member -MemberType Method# 获得对象所有可调用的属性
PS /> Get-Process -ProcessName "Thunder" | Get-Member -MemberType Property

Get-Member是一个非常实用且高频率的命令,当你需要更多的操作帮助时,记得使用它。

当然,不同对象的方法类型也有不同的操作方法,这不是本文的重点,所以就不展开了。相信,以后会写一篇PowerShell如何调用不同类型方法的文章。

从零开始学PowerShell(6)获取对象信息相关推荐

  1. 从零开始学PowerShell(5)自定义格式化信息

    我们已经基本了解了大部分在PowerShell中的格式化输出命令的使用,但是我们之前做的内容的格式化也仅仅是针对现有输出的内容做一些排版格式的输出,在某些场景需求下,这样的排版还是显得过于单调.所以今 ...

  2. 从零开始学PowerShell(9)创建PowerShell对象

    我们之前有一篇文章写过如何获取对象的信息,但是从没有说过如何创建一个PowerShell对象.正巧也看到很多刚学PowerShell的朋友问起这个问题,今天就来说一说如何创建PowerShell对象. ...

  3. 从零开始学前端 - 16. JS对象Object介绍及常用方法

    作者: 她不美却常驻我心 博客地址: https://blog.csdn.net/qq_39506551 微信公众号:老王的前端分享 每篇文章纯属个人经验观点,如有错误疏漏欢迎指正.转载请附带作者信息 ...

  4. 面向对象编程——获取对象信息(五)

    当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()类型: >>> ...

  5. [转] 面向对象编程 - 获取对象信息

    当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> ...

  6. 从零开始学前端:json对象,对象的序列化和反序列化 --- 今天你学习了吗?(JS:Day15)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:字符串.数组的方法 - 今天你学习了吗?(JS:Day12/13/14) 文章目录 从零开始学前端:程序猿小 ...

  7. 从零开始学PowerShell(4)数据的选择、排序与格式化

    上一篇我们已经学会了如何通过自定义筛选条件来过滤我们想要的信息,在PowerShell中除了通过自定义筛选条件来过滤信息外,我们还可以直接使用Select-Object命令来选择我们指定的信息栏并用S ...

  8. 从零开始学PowerShell(2)管道的作用

    上次介绍的两个入门常用命令虽然简单,但可以说是所有使用PowerShell人员中使用频率最高的几个PowerShell命令,所以了解它们是必须的. 今天要讲的"管道"也依然如此,在 ...

  9. 从零开始学PowerShell(3)筛选的力量

    在之前的几篇里我们已经学会了如何使用Get-Help命令来查看指定命令的帮助信息,以及如何使用"管道"符将多个命令连接在一起组合使用. 今天要说的另一个极为非常有用的命令就是Whe ...

最新文章

  1. 《学习OpenCV》第三章习题 第3题
  2. 从VR到元宇宙:回顾30年,改变虚拟现实的18件大事
  3. Excel超级链接方式应用技巧
  4. Opencv 深度学习中为什么普遍使用BGR而不用RGB?
  5. python从入门到实践 第12章 武装飞船 之 调整飞船的速度程序实践
  6. HBA driver for linux
  7. ethtool编译与内核实现介绍
  8. 拖链电缆 机器人电缆_干货!拖链电缆用途及安装注意事项
  9. .net中实现伪静态的学习小结
  10. http head详解
  11. Python 解leetcode:728. Self Dividing Numbers
  12. (转载)图文推荐给开发人员非常实用的站点
  13. pe_xscan作了3点更新
  14. 谷歌翻译失败解决方案
  15. 卸载vm15实用教程
  16. 阿铭Linux第二章笔记
  17. 干货|6个职场常用Excel技巧,千万不要错过呦!
  18. 华氏温度和摄氏温度互相转换
  19. Anomalies,Factors,andMultiFactorModels
  20. 计算机如何磁盘整理,如何整理磁盘碎片让Win7电脑运行更快?

热门文章

  1. 吴恩达机器学习笔记三之逻辑回归
  2. 推荐一个神器 - 把你的照片随心所欲的摆成各种形状
  3. 复现原文(二):Single-cell RNA sequencing of human
  4. P2240 【深基12.例1】部分背包问题
  5. GIT上传下载报错:[You do not have permission to pull from the repository]的解决方案!
  6. Python | threading03 - 使用条件对象,实现线程间的同步
  7. 用python写网络爬虫 第2版 pd_用Python写网络爬虫(第2版)
  8. python语言常量_python---01.各类计算机语言,python历史,变量,常量,数据类型,if条件...
  9. C/C++ OpenCV图像的阈值操作
  10. UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xe7‘ in position 295: illegal multibyte seq