收集計算機的相關信息
此範例僅適用於 Windows 平臺。
來自 CimCmdlets 模組的 Cmdlet 是一般系統管理工作最重要的 Cmdlet。 所有重要的子系統設定都會透過 WMI 公開。 此外,WMI 會將數據視為一或多個專案集合中的物件。 因為 PowerShell 也適用於物件,而且具有管線,可讓您以相同方式處理單一或多個物件,因此一般 WMI 存取可讓您執行一些很少工作的進階工作。
列出桌面設定
我們將從命令開始,以收集本機計算機上桌面的相關信息。
Get-CimInstance -ClassName Win32_Desktop
這會傳回所有桌面計算機的信息,無論它們是否正在使用中。
注意
某些 WMI 類別傳回的資訊可能非常詳細,而且通常包含 WMI 類別的相關元數據。
由於大部分的元數據屬性都有以 Cim 開頭的名稱,因此您可以使用 來篩選屬性 Select-Object
。 使用 「Cim*」 指定 -ExcludeProperty 參數做為值。 例如:
Get-CimInstance -ClassName Win32_Desktop | Select-Object -ExcludeProperty "CIM*"
若要篩選掉元資料,請使用管線運算子 (|) 將命令的結果 Get-CimInstance
傳送至 Select-Object -ExcludeProperty "CIM*"
。
列出 BIOS 資訊
WMI Win32_BIOS 類別會傳回相當精簡且完整的本機電腦上的系統 BIOS 相關信息:
Get-CimInstance -ClassName Win32_BIOS
列出處理器資訊
您可以使用 WMI 的 Win32_Processor 類別來擷取一般處理器資訊,不過您可能想要篩選資訊:
Get-CimInstance -ClassName Win32_Processor | Select-Object -ExcludeProperty "CIM*"
針對處理器系列的泛型描述字串,您可以只傳回 SystemType 屬性:
Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property SystemType
SystemType
----------
X86-based PC
列出電腦製造商和型號
計算機模型資訊也可從 Win32_ComputerSystem取得。 標準顯示的輸出不需要任何篩選來提供 OEM 資料:
Get-CimInstance -ClassName Win32_ComputerSystem
Name PrimaryOwnerName Domain TotalPhysicalMemory Model Manufacturer
---- ---------------- ------ ------------------- ----- ------------
MyPC Jane Doe WORKGROUP 804765696 DA243A-ABA 6415cl NA910 Compaq Presario 06
這類命令的輸出會直接從某些硬體傳回資訊,只與您擁有的數據一樣好。 硬體製造商未正確設定某些資訊,因此可能無法使用。
列出已安裝的 Hotfix
您可以使用Win32_QuickFixEngineering列出所有已安裝的 Hotfix:
Get-CimInstance -ClassName Win32_QuickFixEngineering
此類別會傳回如下所示的 Hotfix 清單:
Source Description HotFixID InstalledBy InstalledOn PSComputerName
------ ----------- -------- ----------- ----------- --------------
Security Update KB4048951 Administrator 12/16/2017 .
如需更簡潔的輸出,您可能會想要排除某些屬性。 雖然您可以使用 Get-CimInstance
的 Property 參數只 選擇 HotFixID,但這樣做實際上會傳回更多資訊,因為預設會顯示所有元數據:
Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixID
InstalledOn :
Caption :
Description :
InstallDate :
Name :
Status :
CSName :
FixComments :
HotFixID : KB4533002
InstalledBy :
ServicePackInEffect :
PSComputerName :
CimClass : root/cimv2:Win32_QuickFixEngineering
CimInstanceProperties : {Caption, Description, InstallDate, Name…}
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
...
傳回其他數據,因為 中的 Get-CimInstance
Property 參數會限制從 WMI 類別實例傳回的屬性,而不是傳回至 PowerShell 的物件。 若要減少輸出,請使用 Select-Object
:
Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixId |
Select-Object -Property HotFixId
HotFixId
--------
KB4048951
列出操作系統版本資訊
Win32_OperatingSystem類別屬性包括版本和 Service Pack 資訊。 您可以明確地選取這些屬性,以從 Win32_OperatingSystem取得版本資訊摘要:
Get-CimInstance -ClassName Win32_OperatingSystem |
Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion
您也可以搭配 Property 參數使用通配符。 由於開頭 為 Build 或 ServicePack 的所有屬性都很重要,因此我們可以將此內容縮短為下列格式:
Get-CimInstance -ClassName Win32_OperatingSystem |
Select-Object -Property Build*,OSType,ServicePack*
BuildNumber : 18362
BuildType : Multiprocessor Free
OSType : 18
ServicePackMajorVersion : 0
ServicePackMinorVersion : 0
列出本機用戶和擁有者
如需本機使用者的一 般資訊,請參閱選取Win32_OperatingSystem 類別屬性。 您可以明確地選取要顯示的屬性,如下所示:
Get-CimInstance -ClassName Win32_OperatingSystem |
Select-Object -Property NumberOfLicensedUsers, NumberOfUsers, RegisteredUser
使用通配符更簡潔的版本是:
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property *user*
取得可用的磁碟空間
若要查看本機磁碟驅動器的磁碟空間和可用空間,您可以使用 Win32_LogicalDisk 類別。 您只需要看到 DriveType 為 3 的實例,WMI 用於固定硬碟的值。
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3"
DeviceID DriveType ProviderName VolumeName Size FreeSpace PSComputerName
-------- --------- ------------ ---------- ---- --------- --------------
C: 3 Local Disk 203912880128 65541357568 .
Q: 3 New Volume 122934034432 44298250240 .
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" |
Measure-Object -Property FreeSpace,Size -Sum |
Select-Object -Property Property,Sum
Property Sum
-------- ---
FreeSpace 109839607808
Size 326846914560
取得登入會話資訊
您可以透過 Win32_LogonSession WMI 類別取得與使用者相關聯之登入工作階段的一般資訊:
Get-CimInstance -ClassName Win32_LogonSession
讓使用者登入計算機
您可以使用 Win32_ComputerSystem,顯示登入特定電腦系統的使用者。 這個指令只會傳回登入系統桌面的使用者:
Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName
從計算機取得當地時間
您可以使用 Win32_LocalTime WMI 類別,擷取特定電腦上的目前當地時間。
Get-CimInstance -ClassName Win32_LocalTime
Day : 23
DayOfWeek : 1
Hour : 8
Milliseconds :
Minute : 52
Month : 12
Quarter : 4
Second : 55
WeekInMonth : 4
Year : 2019
PSComputerName :
顯示服務狀態
若要檢視特定電腦上所有服務的狀態,您可以在本機使用 Get-Service
Cmdlet。 針對遠端系統,您可以使用 Win32_Service WMI 類別。 如果您也用來 Select-Object
將結果篩選為 Status、 Name 和 DisplayName,則輸出格式與 中的 Get-Service
輸出格式幾乎完全相同:
Get-CimInstance -ClassName Win32_Service |
Select-Object -Property Status,Name,DisplayName
若要允許完整顯示具有長名稱之服務的名稱,請使用 的 Format-Table
AutoSize 和 Wrap 參數。 這些參數會優化數據行寬度,並允許長名稱換行,而不是被截斷:
Get-CimInstance -ClassName Win32_Service |
Format-Table -Property Status, Name, DisplayName -AutoSize -Wrap