今天來測試一下,這兩個指令集。
在第一本教科書中,示範的收集電腦資訊所使用的指令集就是Get-CimInstance。裡面特別有段說明是:有些 WMI 類別傳回的資訊可能非常詳細...
而在示範碼中,有專門說明如何取得WMI物件。
閱讀範例之後,覺得二者真是很像;於是二話不說開始測試。綜合在第6天「在PowerShell中調整資料儲存格式及輸出方式」,挨踢狗己經知道基本使用變數,及呼叫特定輸出值的方法,於在這次測試中,也一併用上
答案:內容一樣,格式不同
Get-CimInstance -ClassName Win32_ComputerSystem
Get-WmiObject -Class Win32_ComputerSystem
再測試原來做出 $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*"
最後測試將輸出結果存入變數、並再叫出特定欄位拼成需要的資料集,也是成功!
$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
有了前面的經驗,就直接跳到測試將輸出結果存入變數、並再叫出特定欄位拼成需要的資料集,也是成功!
$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
結論是,Get-CimInstance和Get-WinObject在目前的資訊需求上,都能滿足使用,提供叫用的方式也沒有不同,所以網管人可以考慮,是要解決rpc的問題容易,還是和WinRM比較熟,再決定要用哪個方法。