从零开始学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 4485124096Get-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 PropertyGet-Member是一個非常實用且高頻率的命令,當你需要更多的操作幫助時,記得使用它。
當然,不同對象的方法類型也有不同的操作方法,這不是本文的重點,所以就不展開了。相信,以后會寫一篇PowerShell如何調用不同類型方法的文章。
總結
以上是生活随笔為你收集整理的从零开始学PowerShell(6)获取对象信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第十九天
- 下一篇: python+selenium七:下拉框