Get-CimClass
Posted by: Richard Siddaway
Get-CimClass is used to dig into the information available within a WMI class.
At its most basic level we get a set of information like this
PS> Get-CimClass -ClassName Win32_OperatingSystem | fl *
ClassName : Win32_OperatingSystem
SuperClassName : CIM_OperatingSystem
CimSuperClassName : CIM_OperatingSystem
SuperClass : Microsoft.Management.Infrastructure.CimClass
CimSuperClass : Microsoft.Management.Infrastructure.CimClass
Namespace : ROOT/cimv2
Properties : {Caption, Description, InstallDate, Name…}
CimClassProperties : {Caption, Description, InstallDate, Name…}
Qualifiers : {Locale, UUID, dynamic, provider…}
CimClassQualifiers : {Locale, UUID, dynamic, provider…}
Methods : {Reboot, Shutdown, Win32Shutdown, Win32ShutdownTracker…}
CimClassMethods : {Reboot, Shutdown, Win32Shutdown, Win32ShutdownTracker…}
CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
We get a few parameters to work with
PS> Get-Help Get-CimClass
NAME
Get-CimClass
SYNTAX
Get-CimClass [[-ClassName] <string>] [[-Namespace] <string>] [-OperationTimeoutSec <UInt32>] [-ComputerName
<string[]>] [-MethodName <string>] [-PropertyName <string>] [-QualifierName <string>] [<CommonParameters>]
Get-CimClass [[-ClassName] <string>] [[-Namespace] <string>] [-OperationTimeoutSec <UInt32>] -CimSession
<CimSession[]> [-MethodName <string>] [-PropertyName <string>] [-QualifierName <string>] [<CommonParameters>]
Want to know which WMI classes have a method called create
PS> Get-CimClass -MethodName Create
NameSpace: ROOT/cimv2
ClassName Methods Properties
——— ——- ———-
Win32_ShadowStorage {Create} {AllocatedSpace, DiffVolume, MaxSpace, UsedSpace…}
Win32_ScheduledJob {Create, Delete} {Caption, Description, InstallDate, Name…}
Win32_DfsNode {Create} {Caption, Description, InstallDate, Name…}
Win32_BaseService {StartService, St… {Caption, Description, InstallDate, Name…}
Win32_SystemDriver {StartService, St… {Caption, Description, InstallDate, Name…}
Win32_Service {StartService, St… {Caption, Description, InstallDate, Name…}
Win32_TerminalService {StartService, St… {Caption, Description, InstallDate, Name…}
Win32_Share {Create, SetShare… {Caption, Description, InstallDate, Name…}
Win32_ClusterShare {Create, SetShare… {Caption, Description, InstallDate, Name…}
Win32_ShadowCopy {Create, Revert} {Caption, Description, InstallDate, Name…}
Win32_Process {Create, Terminat… {Caption, Description, InstallDate, Name…}
or a property called Size
PS> Get-CimClass -PropertyName Size
NameSpace: ROOT/cimv2
ClassName
———
Win32_DiskDrive
Win32_CDROMDrive
CIM_LogicalDisk
Win32_LogicalDisk
Win32_MappedLogicalDisk
Win32_DiskPartition
Win32_PrintJob
We can dig deeper into a class
Get-CimClass -ClassName Win32_OperatingSystem | select -ExpandProperty Properties
provides an output like this for every property
Name : CSName
Value :
CimType : String
Flags : Property, ReadOnly, NullValue
Qualifiers : {CIM_Key, MaxLen, Propagated, read}
ReferenceClassName :
Likewise methods
Get-CimClass -ClassName Win32_OperatingSystem | select -ExpandProperty Methods
or if you want detail on a particular method
PS> Get-CimClass -ClassName Win32_OperatingSystem | select -ExpandProperty Methods | where name -eq SetDateTime | fl *
Name : SetDateTime
ReturnType : UInt32
Parameters : {LocalDateTime}
Qualifiers : {Implemented, Privileges, ValueMap}
And no thats not a typo on the where statement – its a new PowerShell v3 feature I’ll cover another day
Get-CimClass -ClassName Win32_OperatingSystem | select -ExpandProperty Qualifiers
and
Get-CimClass -ClassName Win32_OperatingSystem | select -ExpandProperty CimSystemProperties | fl *
do what you would expect
Finding the key property for a class is a useful exercise
Get-CimClass -ClassName Win32_Process | select -ExpandProperty Properties | where {$_.Qualifiers -like "*key*"}
returns a number of properties – some are like this
Name : CreationClassName
Value :
CimType : String
Flags : Property, ReadOnly, NullValue
Qualifiers : {CIM_Key, MaxLen, read}
ReferenceClassName :
and have the CIM_Key qualifier but the one we are really interested in is this one
Name : Handle
Value :
CimType : String
Flags : Property, Key, ReadOnly, NullValue
Qualifiers : {key, MaxLen, read}
ReferenceClassName :
Lots of useful information to be gained from this cmdlet. Don’t leave home to explore WMI without it.




