使用WMI对象收集计算机信息
WMI(windows管理規(guī)范),是Windows 2K/XP管理系統(tǒng)的核心;對于其他的Win32操作系統(tǒng),WMI是一個有用的插件。WMI以CIMOM為基礎(chǔ)。
CIMOM即公共信息模型對象管理器(Common Information Model Object Manager),是一個描述操作系統(tǒng)構(gòu)成單元的對象數(shù)據(jù)庫,為MMC和腳本程序提供了一個訪問操作系統(tǒng)構(gòu)成單元的公共接口。有了WMI,工具軟件和腳本程序訪問操作系統(tǒng)的不同部分時不需要使用不同的API;相反,操作系統(tǒng)的不同部分都可以插入WMI,如圖所示,工具軟件和腳本程序可以方便地讀寫WMI。
學習目標
-
獲取所有的WMI對象
-
WMI類詳細信息顯示
-
使用WMI對計算機信息進行收集
-
使用WQL語句
WMI對象
-
WMI對象:WmiObject
-
WMI:Windows管理規(guī)范
-
WMI將數(shù)據(jù)視為有一個或多個項目的集合中的對象
-
通過WMI可以使用較少的工作量執(zhí)行高級工作
-
獲取WMI對象:Get-WmiObject
-
顯示所有的WMI對象
-
Get-WmiObject-List
-
可以使用-commputer選項獲取遠程計算機上的參數(shù)
獲取本機所有WmiObject 信息
| 1 | Get-WmiObject?--list |
獲取磁盤信息
| 1 | Get-WmiObject?win32_logicaldisk |
獲取指定磁盤信息
| 1 | Get-WmiObject?win32_logicaldisk?|??{$_.DeviceID?-like?"C:"} |
獲取C盤剩余空間
| 1 | (Get-WmiObject?win32_logicaldisk?|??{$_.DeviceID?-like?"C:"}).freespace |
獲取CPU信息
| 1 | Get-WmiObject?win32_processor |
注意:上面是我在虛擬機中執(zhí)行命令的結(jié)果,物理機中信息要比這多很多
查看計算機制造商信息
| 1 | Get-WmiObject?win32_computersystem |
獲取內(nèi)存總大小
| 1 | (Get-WmiObject?win32_computersystem).TotalPhysicalmemory |
查看系統(tǒng)共享目錄
| 1 | Get-WmiObject?win32_share |
??
查看共享相信信息
| 1 | Get-WmiObject?win32_share?|?Format-list?* |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | PS?C:\Users\Administrator>?Get-WmiObject?win32_share?|?Format-list?* PSComputerName???:?OPS01-WINTEST01 Status???????????:?OK Type?????????????:?2147483648 Name?????????????:?ADMIN$ __GENUS??????????:?2 __CLASS??????????:?Win32_Share __SUPERCLASS?????:?CIM_LogicalElement __DYNASTY????????:?CIM_ManagedSystemElement __RELPATH????????:?Win32_Share.Name="ADMIN$" __PROPERTY_COUNT?:?10 __DERIVATION?????:?{CIM_LogicalElement,?CIM_ManagedSystemElement} __SERVER?????????:?OPS01-WINTEST01 __NAMESPACE??????:?root\cimv2 __PATH???????????:?\\OPS01-WINTEST01\root\cimv2:Win32_Share.Name="ADMIN AccessMask???????: AllowMaximum?????:?True Caption??????????:?Remote?Admin Description??????:?Remote?Admin InstallDate??????: MaximumAllowed???: Path?????????????:?C:\Windows Scope????????????:?System.Management.ManagementScope Options??????????:?System.Management.ObjectGetOptions ClassPath????????:?\\OPS01-WINTEST01\root\cimv2:Win32_Share Properties???????:?{AccessMask,?AllowMaximum,?Caption,?Description...} SystemProperties?:?{__GENUS,?__CLASS,?__SUPERCLASS,?__DYNASTY...} Qualifiers???????:?{dynamic,?Locale,?provider,?UUID} Site?????????????: Container????????: PSComputerName???:?OPS01-WINTEST01 Status???????????:?OK Type?????????????:?2147483648 Name?????????????:?C$ __GENUS??????????:?2 __CLASS??????????:?Win32_Share __SUPERCLASS?????:?CIM_LogicalElement __DYNASTY????????:?CIM_ManagedSystemElement __RELPATH????????:?Win32_Share.Name="C$" __PROPERTY_COUNT?:?10 __DERIVATION?????:?{CIM_LogicalElement,?CIM_ManagedSystemElement} __SERVER?????????:?OPS01-WINTEST01 __NAMESPACE??????:?root\cimv2 __PATH???????????:?\\OPS01-WINTEST01\root\cimv2:Win32_Share.Name="C$" AccessMask???????: AllowMaximum?????:?True Caption??????????:?Default?share Description??????:?Default?share InstallDate??????: MaximumAllowed???: Path?????????????:?C:\ Scope????????????:?System.Management.ManagementScope Options??????????:?System.Management.ObjectGetOptions ClassPath????????:?\\OPS01-WINTEST01\root\cimv2:Win32_Share Properties???????:?{AccessMask,?AllowMaximum,?Caption,?Description...} SystemProperties?:?{__GENUS,?__CLASS,?__SUPERCLASS,?__DYNASTY...} Qualifiers???????:?{dynamic,?Locale,?provider,?UUID} Site?????????????: Container????????: PSComputerName???:?OPS01-WINTEST01 Status???????????:?OK Type?????????????:?2147483648 Name?????????????:?D$ __GENUS??????????:?2 __CLASS??????????:?Win32_Share __SUPERCLASS?????:?CIM_LogicalElement __DYNASTY????????:?CIM_ManagedSystemElement __RELPATH????????:?Win32_Share.Name="D$" __PROPERTY_COUNT?:?10 __DERIVATION?????:?{CIM_LogicalElement,?CIM_ManagedSystemElement} __SERVER?????????:?OPS01-WINTEST01 __NAMESPACE??????:?root\cimv2 __PATH???????????:?\\OPS01-WINTEST01\root\cimv2:Win32_Share.Name="D$" AccessMask???????: AllowMaximum?????:?True Caption??????????:?Default?share Description??????:?Default?share InstallDate??????: MaximumAllowed???: Path?????????????:?D:\ Scope????????????:?System.Management.ManagementScope Options??????????:?System.Management.ObjectGetOptions ClassPath????????:?\\OPS01-WINTEST01\root\cimv2:Win32_Share Properties???????:?{AccessMask,?AllowMaximum,?Caption,?Description...} SystemProperties?:?{__GENUS,?__CLASS,?__SUPERCLASS,?__DYNASTY...} Qualifiers???????:?{dynamic,?Locale,?provider,?UUID} Site?????????????: Container????????: PSComputerName???:?OPS01-WINTEST01 Status???????????:?OK Type?????????????:?2147483651 Name?????????????:?IPC$ __GENUS??????????:?2 __CLASS??????????:?Win32_Share __SUPERCLASS?????:?CIM_LogicalElement __DYNASTY????????:?CIM_ManagedSystemElement __RELPATH????????:?Win32_Share.Name="IPC$" __PROPERTY_COUNT?:?10 __DERIVATION?????:?{CIM_LogicalElement,?CIM_ManagedSystemElement} __SERVER?????????:?OPS01-WINTEST01 __NAMESPACE??????:?root\cimv2 __PATH???????????:?\\OPS01-WINTEST01\root\cimv2:Win32_Share.Name="IPC$" AccessMask???????: AllowMaximum?????:?True Caption??????????:?Remote?IPC Description??????:?Remote?IPC InstallDate??????: MaximumAllowed???: Path?????????????: Scope????????????:?System.Management.ManagementScope Options??????????:?System.Management.ObjectGetOptions ClassPath????????:?\\OPS01-WINTEST01\root\cimv2:Win32_Share Properties???????:?{AccessMask,?AllowMaximum,?Caption,?Description...} SystemProperties?:?{__GENUS,?__CLASS,?__SUPERCLASS,?__DYNASTY...} Qualifiers???????:?{dynamic,?Locale,?provider,?UUID} Site?????????????: Container????????: |
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
手動創(chuàng)建的共享type為0,系統(tǒng)默認的共享,type值不為0,所以可以用以下方法過濾出手動創(chuàng)建的共享目錄
| 1 | Get-WmiObject?win32_share?|??{$_.type?-eq?0} |
使用WQL語句
使用WQL語句可以用于篩選WMI對象
語法:
| 1 | Get-WmiObject?-Query?"select?[對象]?from?WMI對象??WHERE?條件“ |
上面的命令可以分解成兩條:
-
get-wmiobject -query "WQL語句"?
-
WQL= ”select * from Wmi對象 where 條件“
練習:
-
列出本機的WmiObject對象
-
只獲取win32_開頭的對象
-
獲取所有的Win32_Share對象,并用列舉的方式表示
-
查找狀態(tài)為running的win32_service對象
-
查找startMode為Auto的win32_service對象
-
查看所有的本地磁盤
-
查找每個磁盤的剩余空間
例如: 查看所有由用戶創(chuàng)建的共享目錄
| 1 | Get-WmiObject?-query?"select?*?from?win32_share?where?type=0" |
練習1:獲取win32_開頭的對象
| 1 | Get-WmiObject?-list?win32_* |
練習2:查找狀態(tài)為running的win32_service對象
| 1 | Get-WmiObject?-query?"select?*?from?win32_service?where?state='running'" |
以列表形式顯示:
很多WMI對象可以使用cmdlet獲取,例如:
-
Get-WmiObject win32_service ?== Get-Service
-
Get-WmiObject win32_Process ?== Get-Process
本文轉(zhuǎn)自 曾哥最愛 51CTO博客,原文鏈接:http://blog.51cto.com/zengestudy/1873738,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的使用WMI对象收集计算机信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用LWA和Lync模拟外部测试无边缘单
- 下一篇: SAP Oracle EBS集成解决方