iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
0
自我挑戰組

PowerShell 30天練功做網管平台系列 第 8

08_Get-CimInstance v.s. Get-WinObject

今天來測試一下,這兩個指令集。


在第一本教科書中,示範的收集電腦資訊所使用的指令集就是Get-CimInstance。裡面特別有段說明是:有些 WMI 類別傳回的資訊可能非常詳細...
https://ithelp.ithome.com.tw/upload/images/20181023/20111755L6p2vcjMRO.jpg

而在示範碼中,有專門說明如何取得WMI物件

閱讀範例之後,覺得二者真是很像;於是二話不說開始測試。綜合在第6天「在PowerShell中調整資料儲存格式及輸出方式」,挨踢狗己經知道基本使用變數,及呼叫特定輸出值的方法,於在這次測試中,也一併用上

測試Win32_ComputerSystem在Get-CimInstance和Get-WmiObject中的執行結果

答案:內容一樣,格式不同

Get-CimInstance -ClassName Win32_ComputerSystem
Get-WmiObject -Class Win32_ComputerSystem

https://ithelp.ithome.com.tw/upload/images/20181023/20111755vttj37T9Ot.jpg

再測試原來做出 $HWDetail 的指令。結果很相近,就是排列有些不同,但我們所需要的值一樣。

Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property [a-z]* -ExcludeProperty "CIM*"
Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property [a-z]* -ExcludeProperty "CIM*"

https://ithelp.ithome.com.tw/upload/images/20181023/20111755XufWEtMUt6.jpg

最後測試將輸出結果存入變數、並再叫出特定欄位拼成需要的資料集,也是成功!

$HWDetail=Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property [a-z]* -ExcludeProperty "CIM*"
$HWinfo="$($HWDetail.name);$($HWDetail.dOMAIN);$($HWDetail.username;)"

$AA=Get-WMIOBJECT -ClassName Win32_ComputerSystem | Select-Object -Property [a-z]* -ExcludeProperty "CIM*"
$AAinfo="$($AA.name);$($AA.dOMAIN);$($AA.username;)"

$HWinfo
$AAinfo

https://ithelp.ithome.com.tw/upload/images/20181023/20111755C2OHQXtPcd.jpg

測試Win32_NetworkAdapterConfiguration在Get-CimInstance和Get-WmiObject中的執行結果

有了前面的經驗,就直接跳到測試將輸出結果存入變數、並再叫出特定欄位拼成需要的資料集,也是成功!

$NetDetail=Get-CIMINSTANCE -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
$NetInfo="$($NetDetail[0].IPAddress[0]);$($NetDetail[0].IPSubnet[0]);$($NetDetail[0].DefaultIPGateway);$($NetDetail[0].MACAddress);$($NetDetail[0].DNSServerSearchOrder);$($NetDetail[0].DNSHostName)"

$BB=Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
$BBInfo="$($BB[0].IPAddress[0]);$($BB[0].IPSubnet[0]);$($BB[0].DefaultIPGateway);$($BB[0].MACAddress);$($BB[0].DNSServerSearchOrder);$($BB[0].DNSHostName)"

$NetInfo
$BBInfo

https://ithelp.ithome.com.tw/upload/images/20181023/20111755uaoxn8SFZi.jpg


結論是,Get-CimInstance和Get-WinObject在目前的資訊需求上,都能滿足使用,提供叫用的方式也沒有不同,所以網管人可以考慮,是要解決rpc的問題容易,還是和WinRM比較熟,再決定要用哪個方法。


上一篇
07_讀別部電腦的資料
下一篇
09_其他指令的應用
系列文
PowerShell 30天練功做網管平台14

尚未有邦友留言

立即登入留言