欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

从零开始学PowerShell(6)获取对象信息

发布时间:2025/3/15 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 从零开始学PowerShell(6)获取对象信息 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

而在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)获取对象信息的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。