Win32_1394Controller

The class Win32_1394Controller represents the capabilities and management of a 1394 controller. IEEE 1394 is a specification for a high-speed serial bus.

Methods

Win32_1394Controller has no methods. Inherited methods (Reset and SetPowerState) are not implemented.

Properties

Win32_1394Controller returns 22 properties:

'Availability','ConfigManagerErrorCode','ConfigManagerUserConfig',
'CreationClassName','Description','DeviceID','ErrorCleared','ErrorDescription','InstallDate',
'LastErrorCode','Manufacturer','MaxNumberControlled','Name','PNPDeviceID',
'PowerManagementCapabilities','PowerManagementSupported','ProtocolSupported','Status','StatusInfo',
'SystemCreationClassName','SystemName','TimeOfLastReset'

Unless explicitly marked as WRITEABLE, all properties are read-only.

Availability

UINT16 MAX 64 CHAR

Availability and status of the device.

Availability returns a numeric value. To translate it into a meaningful text, use any of the following approaches:

Use Update-Type

Update-Type tells PowerShell how to interpret the property. This command needs to be executed only once per PowerShell session:

Update-TypeData -MemberName Availability -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_1394controller" -MemberType ScriptProperty  -Value {
  Enum EnumAvailability
  {
    Other                       = 1
    Unknown                     = 2
    RunningFull_Power           = 3
    Warning                     = 4
    In_Test                     = 5
    Not_Applicable              = 6
    Power_Off                   = 7
    Off_Line                    = 8
    Off_Duty                    = 9
    Degraded                    = 10
    Not_Installed               = 11
    Install_Error               = 12
    Power_Save_Unknown          = 13
    Power_Save_Low_Power_Mode   = 14
    Power_Save_Standby          = 15
    Power_Cycle                 = 16
    Power_Save_Warning          = 17
    Paused                      = 18
    Not_Ready                   = 19
    Not_Configured              = 20
    Quiesced                    = 21
  }

  [EnumAvailability]($this.PSBase.CimInstanceProperties['Availability'].Value)
} -Force

Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Availability
Use Select-Object

Select-Object supports calculated properties. When you submit a hashtable, PowerShell dynamically calculates the result:

$Availability = @{
  Name = 'AvailabilityText'
  Expression = {
    $value = $_.Availability
    
    switch([int]$value)
      {
        1          {'Other'}
        2          {'Unknown'}
        3          {'Running/Full Power'}
        4          {'Warning'}
        5          {'In Test'}
        6          {'Not Applicable'}
        7          {'Power Off'}
        8          {'Off Line'}
        9          {'Off Duty'}
        10         {'Degraded'}
        11         {'Not Installed'}
        12         {'Install Error'}
        13         {'Power Save - Unknown'}
        14         {'Power Save - Low Power Mode'}
        15         {'Power Save - Standby'}
        16         {'Power Cycle'}
        17         {'Power Save - Warning'}
        18         {'Paused'}
        19         {'Not Ready'}
        20         {'Not Configured'}
        21         {'Quiesced'}
        default    {"$value"}
      }
      
  }  
}

Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Availability, $Availability
Use a PowerShell Hashtable

You can use a PowerShell hashtable to decode numeric values. Use a hashtable like this one:

$Availability_map = @{
      1 = 'Other'
      2 = 'Unknown'
      3 = 'Running/Full Power'
      4 = 'Warning'
      5 = 'In Test'
      6 = 'Not Applicable'
      7 = 'Power Off'
      8 = 'Off Line'
      9 = 'Off Duty'
     10 = 'Degraded'
     11 = 'Not Installed'
     12 = 'Install Error'
     13 = 'Power Save - Unknown'
     14 = 'Power Save - Low Power Mode'
     15 = 'Power Save - Standby'
     16 = 'Power Cycle'
     17 = 'Power Save - Warning'
     18 = 'Paused'
     19 = 'Not Ready'
     20 = 'Not Configured'
     21 = 'Quiesced'
}
Use Enum structure

You can cast the raw property values to a new enum type to translate raw numeric values into friendly text. Use an enum like this one:

Enum EnumAvailability
{
  Other                       = 1
  Unknown                     = 2
  RunningFull_Power           = 3
  Warning                     = 4
  In_Test                     = 5
  Not_Applicable              = 6
  Power_Off                   = 7
  Off_Line                    = 8
  Off_Duty                    = 9
  Degraded                    = 10
  Not_Installed               = 11
  Install_Error               = 12
  Power_Save_Unknown          = 13
  Power_Save_Low_Power_Mode   = 14
  Power_Save_Standby          = 15
  Power_Cycle                 = 16
  Power_Save_Warning          = 17
  Paused                      = 18
  Not_Ready                   = 19
  Not_Configured              = 20
  Quiesced                    = 21
}

ConfigManagerErrorCode

UINT32

Win32 Configuration Manager error code.

ConfigManagerErrorCode returns a numeric value. To translate it into a meaningful text, use any of the following approaches:

Use Update-Type

Update-Type tells PowerShell how to interpret the property. This command needs to be executed only once per PowerShell session:

Update-TypeData -MemberName ConfigManagerErrorCode -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_1394controller" -MemberType ScriptProperty  -Value {
  Enum EnumConfigManagerErrorCode
  {
    OK                                  = 0
    CONFIG_ERROR                        = 1
    CANNOT_LOAD_DRIVER                  = 2
    LOW_MEMORY                          = 3
    REGISTRY_CORRUPTED                  = 4
    MANAGED_RESOURCE_MISSING            = 5
    BOOT_CONFIG_CONFLICT                = 6
    CANNOT_FILTER                       = 7
    DRIVER_LOADER_MISSING               = 8
    FIRMWARE_RESOURCE_PROBLEM           = 9
    DEVICE_CANNOT_START                 = 10
    DEVICE_FAILED                       = 11
    NOT_ENOUGH_FREE_RESOURCES           = 12
    CANNOT_VERIFY_RESOURCES             = 13
    RESTART_REQUIRED                    = 14
    REENUMERATION_PROBLEM               = 15
    CANNOT_IDENTIFY_RESOURCE            = 16
    UNKNOWN_RESOURCE_TYPE               = 17
    REINSTALL_DRIVERS                   = 18
    VXD_LOADER_FAILURE                  = 19
    REGISTRY_CORRUPTION                 = 20
    DEVICE_REMOVED_DUE_TO_ERROR         = 21
    DEVICE_DISABLED                     = 22
    SYSTEM_FAILURE                      = 23
    DEVICE_NOT_PRESENT                  = 24
    DEVICE_SETUP_IN_PROGRESS            = 25
    DEVICE_BEING_INSTALLED              = 26
    NO_VALID_LOG_CONFIG                 = 27
    DRIVERS_MISSING                     = 28
    DEVICE_DISABLED_MISSING_RESOURCES   = 29
    IRQ_CONFLICT                        = 30
    DRIVER_NOT_LOADED                   = 31
  }

  [EnumConfigManagerErrorCode]($this.PSBase.CimInstanceProperties['ConfigManagerErrorCode'].Value)
} -Force

Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, ConfigManagerErrorCode
Use Select-Object

Select-Object supports calculated properties. When you submit a hashtable, PowerShell dynamically calculates the result:

$ConfigManagerErrorCode = @{
  Name = 'ConfigManagerErrorCodeText'
  Expression = {
    $value = $_.ConfigManagerErrorCode
    
    switch([int]$value)
      {
        0          {'OK'}
        1          {'CONFIG_ERROR'}
        2          {'CANNOT_LOAD_DRIVER'}
        3          {'LOW_MEMORY'}
        4          {'REGISTRY_CORRUPTED'}
        5          {'MANAGED_RESOURCE_MISSING'}
        6          {'BOOT_CONFIG_CONFLICT'}
        7          {'CANNOT_FILTER'}
        8          {'DRIVER_LOADER_MISSING'}
        9          {'FIRMWARE_RESOURCE_PROBLEM'}
        10         {'DEVICE_CANNOT_START'}
        11         {'DEVICE_FAILED'}
        12         {'NOT_ENOUGH_FREE_RESOURCES'}
        13         {'CANNOT_VERIFY_RESOURCES'}
        14         {'RESTART_REQUIRED'}
        15         {'REENUMERATION_PROBLEM'}
        16         {'CANNOT_IDENTIFY_RESOURCE'}
        17         {'UNKNOWN_RESOURCE_TYPE'}
        18         {'REINSTALL_DRIVERS'}
        19         {'VXD_LOADER_FAILURE'}
        20         {'REGISTRY_CORRUPTION'}
        21         {'DEVICE_REMOVED_DUE_TO_ERROR'}
        22         {'DEVICE_DISABLED'}
        23         {'SYSTEM_FAILURE'}
        24         {'DEVICE_NOT_PRESENT'}
        25         {'DEVICE_SETUP_IN_PROGRESS'}
        26         {'DEVICE_BEING_INSTALLED'}
        27         {'NO_VALID_LOG_CONFIG'}
        28         {'DRIVERS_MISSING'}
        29         {'DEVICE_DISABLED_MISSING_RESOURCES'}
        30         {'IRQ_CONFLICT'}
        31         {'DRIVER_NOT_LOADED'}
        default    {"$value"}
      }
      
  }  
}

Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, ConfigManagerErrorCode, $ConfigManagerErrorCode
Use a PowerShell Hashtable

You can use a PowerShell hashtable to decode numeric values. Use a hashtable like this one:

$ConfigManagerErrorCode_map = @{
      0 = 'OK'
      1 = 'CONFIG_ERROR'
      2 = 'CANNOT_LOAD_DRIVER'
      3 = 'LOW_MEMORY'
      4 = 'REGISTRY_CORRUPTED'
      5 = 'MANAGED_RESOURCE_MISSING'
      6 = 'BOOT_CONFIG_CONFLICT'
      7 = 'CANNOT_FILTER'
      8 = 'DRIVER_LOADER_MISSING'
      9 = 'FIRMWARE_RESOURCE_PROBLEM'
     10 = 'DEVICE_CANNOT_START'
     11 = 'DEVICE_FAILED'
     12 = 'NOT_ENOUGH_FREE_RESOURCES'
     13 = 'CANNOT_VERIFY_RESOURCES'
     14 = 'RESTART_REQUIRED'
     15 = 'REENUMERATION_PROBLEM'
     16 = 'CANNOT_IDENTIFY_RESOURCE'
     17 = 'UNKNOWN_RESOURCE_TYPE'
     18 = 'REINSTALL_DRIVERS'
     19 = 'VXD_LOADER_FAILURE'
     20 = 'REGISTRY_CORRUPTION'
     21 = 'DEVICE_REMOVED_DUE_TO_ERROR'
     22 = 'DEVICE_DISABLED'
     23 = 'SYSTEM_FAILURE'
     24 = 'DEVICE_NOT_PRESENT'
     25 = 'DEVICE_SETUP_IN_PROGRESS'
     26 = 'DEVICE_BEING_INSTALLED'
     27 = 'NO_VALID_LOG_CONFIG'
     28 = 'DRIVERS_MISSING'
     29 = 'DEVICE_DISABLED_MISSING_RESOURCES'
     30 = 'IRQ_CONFLICT'
     31 = 'DRIVER_NOT_LOADED'
}
Use Enum structure

You can cast the raw property values to a new enum type to translate raw numeric values into friendly text. Use an enum like this one:

Enum EnumConfigManagerErrorCode
{
  OK                                  = 0
  CONFIG_ERROR                        = 1
  CANNOT_LOAD_DRIVER                  = 2
  LOW_MEMORY                          = 3
  REGISTRY_CORRUPTED                  = 4
  MANAGED_RESOURCE_MISSING            = 5
  BOOT_CONFIG_CONFLICT                = 6
  CANNOT_FILTER                       = 7
  DRIVER_LOADER_MISSING               = 8
  FIRMWARE_RESOURCE_PROBLEM           = 9
  DEVICE_CANNOT_START                 = 10
  DEVICE_FAILED                       = 11
  NOT_ENOUGH_FREE_RESOURCES           = 12
  CANNOT_VERIFY_RESOURCES             = 13
  RESTART_REQUIRED                    = 14
  REENUMERATION_PROBLEM               = 15
  CANNOT_IDENTIFY_RESOURCE            = 16
  UNKNOWN_RESOURCE_TYPE               = 17
  REINSTALL_DRIVERS                   = 18
  VXD_LOADER_FAILURE                  = 19
  REGISTRY_CORRUPTION                 = 20
  DEVICE_REMOVED_DUE_TO_ERROR         = 21
  DEVICE_DISABLED                     = 22
  SYSTEM_FAILURE                      = 23
  DEVICE_NOT_PRESENT                  = 24
  DEVICE_SETUP_IN_PROGRESS            = 25
  DEVICE_BEING_INSTALLED              = 26
  NO_VALID_LOG_CONFIG                 = 27
  DRIVERS_MISSING                     = 28
  DEVICE_DISABLED_MISSING_RESOURCES   = 29
  IRQ_CONFLICT                        = 30
  DRIVER_NOT_LOADED                   = 31
}

ConfigManagerUserConfig

BOOL

If $true, the device is using a user-defined configuration.

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, ConfigManagerUserConfig

# filtering all instances with ConfigManagerUserConfig set to $true:
Get-CimInstance -ClassName Win32_1394Controller | Where-Object ConfigManagerUserConfig -eq $true | Select-Object -Property DeviceID, ConfigManagerUserConfig

CreationClassName

STRING

Name of the first concrete class to appear in the inheritance chain used in the creation of an instance. When used with the other key properties of the class, the property allows all instances of this class and its subclasses to be uniquely identified.

Description

STRING

Description of the object.

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Description

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Description | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.Description
  "${DeviceID}: Description = $value"
}

DeviceID

KEY PROPERTY STRING

Unique identifier of this controller.

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, DeviceID | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.DeviceID
  "${DeviceID}: DeviceID = $value"
}

ErrorCleared

BOOL

If $true, the error reported in LastErrorCode is now cleared.

ErrorDescription

STRING

More information about the error recorded in LastErrorCode, and information on any corrective actions that may be taken.

InstallDate

DATETIME

Date and time the object was installed. This property does not need a value to indicate that the object is installed.

LastErrorCode

UINT32

Last error code reported by the logical device.

Manufacturer

STRING

Manufacturer of the controller.

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Manufacturer

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Manufacturer | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.Manufacturer
  "${DeviceID}: Manufacturer = $value"
}

MaxNumberControlled

UINT32

Maximum number of directly addressable entities supportable by this controller. A value of 0 (zero) should be used if the number is unknown.

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, MaxNumberControlled

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, MaxNumberControlled | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.MaxNumberControlled
  "${DeviceID}: MaxNumberControlled = $value"
}

Name

STRING

Label by which the object is known. When subclassed, the property can be overridden to be a key property.

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Name

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Name | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.Name
  "${DeviceID}: Name = $value"
}

PNPDeviceID

STRING

Windows Plug and Play device identifier of the logical device.

Example: “*PNP030b”

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, PNPDeviceID

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, PNPDeviceID | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.PNPDeviceID
  "${DeviceID}: PNPDeviceID = $value"
}

PowerManagementCapabilities

UINT16 ARRAY

Array of the specific power-related capabilities of a logical device.

This property is inherited and typically empty.

PowerManagementSupported

BOOL

If $true, device can be power-managed, for example, a device can be put into suspend mode, and so on. This property does not indicate that power management features are enabled currently, but it does indicate that the logical device is capable of power management.

This property is inherited and typically empty.

ProtocolSupported

UINT16

Protocol used by the controller to access “controlled” devices.

ProtocolSupported returns a numeric value. To translate it into a meaningful text, use any of the following approaches:

Use Update-Type

Update-Type tells PowerShell how to interpret the property. This command needs to be executed only once per PowerShell session:

Update-TypeData -MemberName ProtocolSupported -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_1394controller" -MemberType ScriptProperty  -Value {
  Enum EnumProtocolSupported
  {
    Other                              = 1
    Unknown                            = 2
    EISA                               = 3
    ISA                                = 4
    PCI                                = 5
    ATAATAPI                           = 6
    Flexible_Diskette                  = 7
    Mode1496                           = 8
    SCSI_Parallel_Interface            = 9
    SCSI_Fibre_Channel_Protocol        = 10
    SCSI_Serial_Bus_Protocol           = 11
    SCSI_Serial_Storage_Architecture   = 13
    VESA                               = 14
    PCMCIA                             = 15
    Universal_Serial_Bus               = 16
    Parallel_Protocol                  = 17
    ESCON                              = 18
    Diagnostic                         = 19
    I2C                                = 20
    Power                              = 21
    HIPPI                              = 22
    MultiBus                           = 23
    VME                                = 24
    IPI                                = 25
    IEEE_488                           = 26
    RS232                              = 27
    IEEE_8023_10BASE5                  = 28
    IEEE_8023_10BASE2                  = 29
    IEEE_8023_1BASE5                   = 30
    IEEE_8023_10BROAD36                = 31
    IEEE_8023_100BASEVG                = 32
    IEEE_8025_Token_Ring               = 33
    ANSI_X3T95_FDDI                    = 34
    MCA                                = 35
    ESDI                               = 36
    IDE                                = 37
    CMD                                = 38
    ST506                              = 39
    DSSI                               = 40
    QIC2                               = 41
    Enhanced_ATAIDE                    = 42
    AGP                                = 43
    TWIRP_two_way_infrared             = 44
    FIR_fast_infrared                  = 45
    SIR_serial_infrared                = 46
    IrBus                              = 47
    SCSI_Serial_Bus_Protocol_2         = 1394
  }

  [EnumProtocolSupported]($this.PSBase.CimInstanceProperties['ProtocolSupported'].Value)
} -Force

Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, ProtocolSupported
Use Select-Object

Select-Object supports calculated properties. When you submit a hashtable, PowerShell dynamically calculates the result:

$ProtocolSupported = @{
  Name = 'ProtocolSupportedText'
  Expression = {
    $value = $_.ProtocolSupported
    
    switch([int]$value)
      {
        1          {'Other'}
        2          {'Unknown'}
        3          {'EISA'}
        4          {'ISA'}
        5          {'PCI'}
        6          {'ATA/ATAPI'}
        7          {'Flexible Diskette'}
        8          {'Mode1496'}
        9          {'SCSI Parallel Interface'}
        10         {'SCSI Fibre Channel Protocol'}
        11         {'SCSI Serial Bus Protocol'}
        13         {'SCSI Serial Storage Architecture'}
        14         {'VESA'}
        15         {'PCMCIA'}
        16         {'Universal Serial Bus'}
        17         {'Parallel Protocol'}
        18         {'ESCON'}
        19         {'Diagnostic'}
        20         {'I2C'}
        21         {'Power'}
        22         {'HIPPI'}
        23         {'MultiBus'}
        24         {'VME'}
        25         {'IPI'}
        26         {'IEEE-488'}
        27         {'RS232'}
        28         {'IEEE 802.3 10BASE5'}
        29         {'IEEE 802.3 10BASE2'}
        30         {'IEEE 802.3 1BASE5'}
        31         {'IEEE 802.3 10BROAD36'}
        32         {'IEEE 802.3 100BASEVG'}
        33         {'IEEE 802.5 Token-Ring'}
        34         {'ANSI X3T9.5 FDDI'}
        35         {'MCA'}
        36         {'ESDI'}
        37         {'IDE'}
        38         {'CMD'}
        39         {'ST506'}
        40         {'DSSI'}
        41         {'QIC2'}
        42         {'Enhanced ATA/IDE'}
        43         {'AGP'}
        44         {'TWIRP (two-way infrared)'}
        45         {'FIR (fast infrared)'}
        46         {'SIR (serial infrared)'}
        47         {'IrBus'}
        1394       {'SCSI Serial Bus Protocol-2'}
        default    {"$value"}
      }
      
  }  
}

Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, ProtocolSupported, $ProtocolSupported
Use a PowerShell Hashtable

You can use a PowerShell hashtable to decode numeric values. Use a hashtable like this one:

$ProtocolSupported_map = @{
      1 = 'Other'
      2 = 'Unknown'
      3 = 'EISA'
      4 = 'ISA'
      5 = 'PCI'
      6 = 'ATA/ATAPI'
      7 = 'Flexible Diskette'
      8 = 'Mode1496'
      9 = 'SCSI Parallel Interface'
     10 = 'SCSI Fibre Channel Protocol'
     11 = 'SCSI Serial Bus Protocol'
     13 = 'SCSI Serial Storage Architecture'
     14 = 'VESA'
     15 = 'PCMCIA'
     16 = 'Universal Serial Bus'
     17 = 'Parallel Protocol'
     18 = 'ESCON'
     19 = 'Diagnostic'
     20 = 'I2C'
     21 = 'Power'
     22 = 'HIPPI'
     23 = 'MultiBus'
     24 = 'VME'
     25 = 'IPI'
     26 = 'IEEE-488'
     27 = 'RS232'
     28 = 'IEEE 802.3 10BASE5'
     29 = 'IEEE 802.3 10BASE2'
     30 = 'IEEE 802.3 1BASE5'
     31 = 'IEEE 802.3 10BROAD36'
     32 = 'IEEE 802.3 100BASEVG'
     33 = 'IEEE 802.5 Token-Ring'
     34 = 'ANSI X3T9.5 FDDI'
     35 = 'MCA'
     36 = 'ESDI'
     37 = 'IDE'
     38 = 'CMD'
     39 = 'ST506'
     40 = 'DSSI'
     41 = 'QIC2'
     42 = 'Enhanced ATA/IDE'
     43 = 'AGP'
     44 = 'TWIRP (two-way infrared)'
     45 = 'FIR (fast infrared)'
     46 = 'SIR (serial infrared)'
     47 = 'IrBus'
   1394 = 'SCSI Serial Bus Protocol-2'
}
Use Enum structure

You can cast the raw property values to a new enum type to translate raw numeric values into friendly text. Use an enum like this one:

Enum EnumProtocolSupported
{
  Other                              = 1
  Unknown                            = 2
  EISA                               = 3
  ISA                                = 4
  PCI                                = 5
  ATAATAPI                           = 6
  Flexible_Diskette                  = 7
  Mode1496                           = 8
  SCSI_Parallel_Interface            = 9
  SCSI_Fibre_Channel_Protocol        = 10
  SCSI_Serial_Bus_Protocol           = 11
  SCSI_Serial_Storage_Architecture   = 13
  VESA                               = 14
  PCMCIA                             = 15
  Universal_Serial_Bus               = 16
  Parallel_Protocol                  = 17
  ESCON                              = 18
  Diagnostic                         = 19
  I2C                                = 20
  Power                              = 21
  HIPPI                              = 22
  MultiBus                           = 23
  VME                                = 24
  IPI                                = 25
  IEEE_488                           = 26
  RS232                              = 27
  IEEE_8023_10BASE5                  = 28
  IEEE_8023_10BASE2                  = 29
  IEEE_8023_1BASE5                   = 30
  IEEE_8023_10BROAD36                = 31
  IEEE_8023_100BASEVG                = 32
  IEEE_8025_Token_Ring               = 33
  ANSI_X3T95_FDDI                    = 34
  MCA                                = 35
  ESDI                               = 36
  IDE                                = 37
  CMD                                = 38
  ST506                              = 39
  DSSI                               = 40
  QIC2                               = 41
  Enhanced_ATAIDE                    = 42
  AGP                                = 43
  TWIRP_two_way_infrared             = 44
  FIR_fast_infrared                  = 45
  SIR_serial_infrared                = 46
  IrBus                              = 47
  SCSI_Serial_Bus_Protocol_2         = 1394
}

Status

STRING MAX 10 CHAR

Current status of an object. Various operational and nonoperational statuses can be defined.

Available values:

'Degraded','Error','Lost Comm','No Contact','NonRecover','OK','Pred Fail','Service','Starting','Stopping','Stressed','Unknown'
# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Status

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, Status | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.Status
  "${DeviceID}: Status = $value"
}

StatusInfo

UINT16

State of the logical device. If this property does not apply to the logical device, the value 5 (Not Applicable) should be used.

StatusInfo returns a numeric value. To translate it into a meaningful text, use any of the following approaches:

Use Update-Type

Update-Type tells PowerShell how to interpret the property. This command needs to be executed only once per PowerShell session:

Update-TypeData -MemberName StatusInfo -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_1394controller" -MemberType ScriptProperty  -Value {
  Enum EnumStatusInfo
  {
    Other            = 1
    Unknown          = 2
    Enabled          = 3
    Disabled         = 4
    Not_Applicable   = 5
  }

  [EnumStatusInfo]($this.PSBase.CimInstanceProperties['StatusInfo'].Value)
} -Force

Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, StatusInfo
Use Select-Object

Select-Object supports calculated properties. When you submit a hashtable, PowerShell dynamically calculates the result:

$StatusInfo = @{
  Name = 'StatusInfoText'
  Expression = {
    $value = $_.StatusInfo
    
    switch([int]$value)
      {
        1          {'Other'}
        2          {'Unknown'}
        3          {'Enabled'}
        4          {'Disabled'}
        5          {'Not Applicable'}
        default    {"$value"}
      }
      
  }  
}

Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, StatusInfo, $StatusInfo
Use a PowerShell Hashtable

You can use a PowerShell hashtable to decode numeric values. Use a hashtable like this one:

$StatusInfo_map = @{
      1 = 'Other'
      2 = 'Unknown'
      3 = 'Enabled'
      4 = 'Disabled'
      5 = 'Not Applicable'
}
Use Enum structure

You can cast the raw property values to a new enum type to translate raw numeric values into friendly text. Use an enum like this one:

Enum EnumStatusInfo
{
  Other            = 1
  Unknown          = 2
  Enabled          = 3
  Disabled         = 4
  Not_Applicable   = 5
}

SystemCreationClassName

STRING

Value for the scoping computer’s CreationClassName property.

SystemName

STRING

Name of the scoping system.

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, SystemName

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, SystemName | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.SystemName
  "${DeviceID}: SystemName = $value"
}

TimeOfLastReset

DATETIME

Date and time controller was last reset. This could mean the controller was powered down or reinitialized.

# returning class instances:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, TimeOfLastReset

# reading property value:
Get-CimInstance -ClassName Win32_1394Controller | Select-Object -Property DeviceID, TimeOfLastReset | Foreach-Object {

  $DeviceID = $_.DeviceID
  $value = $_.TimeOfLastReset
  "${DeviceID}: TimeOfLastReset = $value"
}

CDXML Definition

You can turn this WMI class and its methods into PowerShell cmdlets by importing below CDXML file (Cmdlet Definition XML) as a module.

Create Win32_1394Controller.cdxml
$folder = "c:\wmi\Win32_1394Controller"
$cdxmlPath = Join-Path -Path $folder -ChildPath "Win32_1394Controller.cdxml"

# create folder if not present:
$exists = Test-Path -Path $folder
if (!$exists) { $null = New-Item -Path $folder -ItemType Directory }

# write file
$content = @'
<?xml version="1.0" encoding="utf-8"?>


<!--
This file is licensed under 'Attribution 4.0 International' license (https://creativecommons.org/licenses/by/4.0/).

You can free of charge use this code in commercial and non-commercial code, and you can freely modify and adjust the code 
as long as you give appropriate credit to the original author Dr. Tobias Weltner.

This material was published and is maintained here: 

https://powershell.one/wmi/root/cimv2/win32_1394controller#cdxml-definition
-->


<PowerShellMetadata xmlns="http://schemas.microsoft.com/cmdlets-over-objects/2009/11">
  <!--referencing the WMI class this cdxml uses-->
  <Class ClassName="Root/CIMV2\Win32_1394Controller" ClassVersion="2.0">
    <Version>1.0</Version>
    <!--default noun used by Get-cmdlets and when no other noun is specified. By convention, we use the prefix "WMI" and the base name of the WMI class involved. This way, you can easily identify the underlying WMI class.-->
    <DefaultNoun>Wmi1394Controller</DefaultNoun>
    <!--define the cmdlets that work with class instances.-->
    <InstanceCmdlets>
      <!--query parameters to select instances. This is typically empty for classes that provide only one instance-->
      <GetCmdletParameters />
      <GetCmdlet>
        <CmdletMetadata Verb="Get" />
        <GetCmdletParameters>
          <QueryableProperties>
            <Property PropertyName="Availability">
              <Type PSType="Win32_1394Controller.Availability" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="ConfigManagerErrorCode">
              <Type PSType="Win32_1394Controller.ConfigManagerErrorCode" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="ConfigManagerUserConfig">
              <Type PSType="switch" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="CreationClassName">
              <Type PSType="system.string" />
              <RegularQuery AllowGlobbing="true">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="Description">
              <Type PSType="system.string" />
              <RegularQuery AllowGlobbing="true">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="DeviceID">
              <Type PSType="system.string" />
              <RegularQuery AllowGlobbing="true">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="ErrorCleared">
              <Type PSType="switch" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="ErrorDescription">
              <Type PSType="system.string" />
              <RegularQuery AllowGlobbing="true">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="InstallDate">
              <Type PSType="system.datetime" />
              <MinValueQuery>
                <CmdletParameterMetadata PSName="BeforeInstallDate" />
              </MinValueQuery>
              <MaxValueQuery>
                <CmdletParameterMetadata PSName="AfterInstallDate" />
              </MaxValueQuery>
            </Property>
            <Property PropertyName="LastErrorCode">
              <Type PSType="system.uint32" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="Manufacturer">
              <Type PSType="system.string" />
              <RegularQuery AllowGlobbing="true">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="MaxNumberControlled">
              <Type PSType="system.uint32" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="Name">
              <Type PSType="system.string" />
              <RegularQuery AllowGlobbing="true">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="PNPDeviceID">
              <Type PSType="system.string" />
              <RegularQuery AllowGlobbing="true">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="PowerManagementCapabilities">
              <Type PSType="Win32_1394Controller.PowerManagementCapabilities" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="PowerManagementSupported">
              <Type PSType="switch" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="ProtocolSupported">
              <Type PSType="Win32_1394Controller.ProtocolSupported" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="Status">
              <Type PSType="system.string" />
              <RegularQuery AllowGlobbing="true">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="StatusInfo">
              <Type PSType="Win32_1394Controller.StatusInfo" />
              <RegularQuery AllowGlobbing="false">
                <CmdletParameterMetadata IsMandatory="false" />
              </RegularQuery>
            </Property>
            <Property PropertyName="TimeOfLastReset">
              <Type PSType="system.datetime" />
              <MinValueQuery>
                <CmdletParameterMetadata PSName="BeforeTimeOfLastReset" />
              </MinValueQuery>
              <MaxValueQuery>
                <CmdletParameterMetadata PSName="AfterTimeOfLastReset" />
              </MaxValueQuery>
            </Property>
          </QueryableProperties>
        </GetCmdletParameters>
      </GetCmdlet>
      <!--defining additional cmdlets that modifies instance properties-->
    </InstanceCmdlets>
  </Class>
  <!--defining enumerations-->
  <Enums>
    <Enum EnumName="Win32_1394Controller.Availability" UnderlyingType="system.uint16">
      <Value Name="Other" Value="1" />
      <Value Name="Unknown" Value="2" />
      <Value Name="RunningFull_Power" Value="3" />
      <Value Name="Warning" Value="4" />
      <Value Name="In_Test" Value="5" />
      <Value Name="Not_Applicable" Value="6" />
      <Value Name="Power_Off" Value="7" />
      <Value Name="Off_Line" Value="8" />
      <Value Name="Off_Duty" Value="9" />
      <Value Name="Degraded" Value="10" />
      <Value Name="Not_Installed" Value="11" />
      <Value Name="Install_Error" Value="12" />
      <Value Name="Power_Save___Unknown" Value="13" />
      <Value Name="Power_Save___Low_Power_Mode" Value="14" />
      <Value Name="Power_Save___Standby" Value="15" />
      <Value Name="Power_Cycle" Value="16" />
      <Value Name="Power_Save___Warning" Value="17" />
      <Value Name="Paused" Value="18" />
      <Value Name="Not_Ready" Value="19" />
      <Value Name="Not_Configured" Value="20" />
      <Value Name="Quiesced" Value="21" />
    </Enum>
    <Enum EnumName="Win32_1394Controller.ConfigManagerErrorCode" UnderlyingType="system.uint32">
      <Value Name="OK" Value="0" />
      <Value Name="CONFIG_ERROR" Value="1" />
      <Value Name="CANNOT_LOAD_DRIVER" Value="2" />
      <Value Name="LOW_MEMORY" Value="3" />
      <Value Name="REGISTRY_CORRUPTED" Value="4" />
      <Value Name="MANAGED_RESOURCE_MISSING" Value="5" />
      <Value Name="BOOT_CONFIG_CONFLICT" Value="6" />
      <Value Name="CANNOT_FILTER" Value="7" />
      <Value Name="DRIVER_LOADER_MISSING" Value="8" />
      <Value Name="FIRMWARE_RESOURCE_PROBLEM" Value="9" />
      <Value Name="DEVICE_CANNOT_START" Value="10" />
      <Value Name="DEVICE_FAILED" Value="11" />
      <Value Name="NOT_ENOUGH_FREE_RESOURCES" Value="12" />
      <Value Name="CANNOT_VERIFY_RESOURCES" Value="13" />
      <Value Name="RESTART_REQUIRED" Value="14" />
      <Value Name="REENUMERATION_PROBLEM" Value="15" />
      <Value Name="CANNOT_IDENTIFY_RESOURCE" Value="16" />
      <Value Name="UNKNOWN_RESOURCE_TYPE" Value="17" />
      <Value Name="REINSTALL_DRIVERS" Value="18" />
      <Value Name="VXD_LOADER_FAILURE" Value="19" />
      <Value Name="REGISTRY_CORRUPTION" Value="20" />
      <Value Name="DEVICE_REMOVED_DUE_TO_ERROR" Value="21" />
      <Value Name="DEVICE_DISABLED" Value="22" />
      <Value Name="SYSTEM_FAILURE" Value="23" />
      <Value Name="DEVICE_NOT_PRESENT" Value="24" />
      <Value Name="DEVICE_SETUP_IN_PROGRESS" Value="25" />
      <Value Name="DEVICE_BEING_INSTALLED" Value="26" />
      <Value Name="NO_VALID_LOG_CONFIG" Value="27" />
      <Value Name="DRIVERS_MISSING" Value="28" />
      <Value Name="DEVICE_DISABLED_MISSING_RESOURCES" Value="29" />
      <Value Name="IRQ_CONFLICT" Value="30" />
      <Value Name="DRIVER_NOT_LOADED" Value="31" />
    </Enum>
    <Enum EnumName="Win32_1394Controller.PowerManagementCapabilities" UnderlyingType="system.uint16">
      <Value Name="Unknown" Value="0" />
      <Value Name="Not_Supported" Value="1" />
      <Value Name="Disabled" Value="2" />
      <Value Name="Enabled" Value="3" />
      <Value Name="Power_Saving_Modes_Entered_Automatically" Value="4" />
      <Value Name="Power_State_Settable" Value="5" />
      <Value Name="Power_Cycling_Supported" Value="6" />
      <Value Name="Timed_Power_On_Supported" Value="7" />
    </Enum>
    <Enum EnumName="Win32_1394Controller.ProtocolSupported" UnderlyingType="system.uint16">
      <Value Name="Other" Value="1" />
      <Value Name="Unknown" Value="2" />
      <Value Name="EISA" Value="3" />
      <Value Name="ISA" Value="4" />
      <Value Name="PCI" Value="5" />
      <Value Name="ATAATAPI" Value="6" />
      <Value Name="Flexible_Diskette" Value="7" />
      <Value Name="Mode1496" Value="8" />
      <Value Name="SCSI_Parallel_Interface" Value="9" />
      <Value Name="SCSI_Fibre_Channel_Protocol" Value="10" />
      <Value Name="SCSI_Serial_Bus_Protocol" Value="11" />
      <Value Name="SCSI_Serial_Bus_Protocol_2" Value="1394" />
      <Value Name="SCSI_Serial_Storage_Architecture" Value="13" />
      <Value Name="VESA" Value="14" />
      <Value Name="PCMCIA" Value="15" />
      <Value Name="Universal_Serial_Bus" Value="16" />
      <Value Name="Parallel_Protocol" Value="17" />
      <Value Name="ESCON" Value="18" />
      <Value Name="Diagnostic" Value="19" />
      <Value Name="I2C" Value="20" />
      <Value Name="Power" Value="21" />
      <Value Name="HIPPI" Value="22" />
      <Value Name="MultiBus" Value="23" />
      <Value Name="VME" Value="24" />
      <Value Name="IPI" Value="25" />
      <Value Name="IEEE_488" Value="26" />
      <Value Name="RS232" Value="27" />
      <Value Name="IEEE_802_3_10BASE5" Value="28" />
      <Value Name="IEEE_802_3_10BASE2" Value="29" />
      <Value Name="IEEE_802_3_1BASE5" Value="30" />
      <Value Name="IEEE_802_3_10BROAD36" Value="31" />
      <Value Name="IEEE_802_3_100BASEVG" Value="32" />
      <Value Name="IEEE_802_5_Token_Ring" Value="33" />
      <Value Name="ANSI_X3T9_5_FDDI" Value="34" />
      <Value Name="MCA" Value="35" />
      <Value Name="ESDI" Value="36" />
      <Value Name="IDE" Value="37" />
      <Value Name="CMD" Value="38" />
      <Value Name="ST506" Value="39" />
      <Value Name="DSSI" Value="40" />
      <Value Name="QIC2" Value="41" />
      <Value Name="Enhanced_ATAIDE" Value="42" />
      <Value Name="AGP" Value="43" />
      <Value Name="TWIRP__two_way_infrared" Value="44" />
      <Value Name="FIR__fast_infrared" Value="45" />
      <Value Name="SIR__serial_infrared" Value="46" />
      <Value Name="IrBus" Value="47" />
    </Enum>
    <Enum EnumName="Win32_1394Controller.StatusInfo" UnderlyingType="system.uint16">
      <Value Name="Other" Value="1" />
      <Value Name="Unknown" Value="2" />
      <Value Name="Enabled" Value="3" />
      <Value Name="Disabled" Value="4" />
      <Value Name="Not_Applicable" Value="5" />
    </Enum>
  </Enums>
</PowerShellMetadata>
'@ | Set-Content -LiteralPath $cdxmlPath -Encoding UTF8

# import module
Import-Module -Name $cdxmlPath -Force -Verbose

# list new cmdlets
Get-Command -Module "Win32_1394Controller"

See here for more information on CDXML and CDXML-based PowerShell modules.

Type Extensions for PowerShell

You can automatically improve properties of class instances by using a types.ps1xml file.

Create Win32_1394Controller.Types.ps1xml
$folder = "c:\wmi\Win32_1394Controller"
$typesPath = Join-Path -Path $folder -ChildPath "Win32_1394Controller.Types.ps1xml"

# create folder if not present:
$exists = Test-Path -Path $folder
if (!$exists) { $null = New-Item -Path $folder -ItemType Directory }

# write file
$content = @'
<?xml version="1.0" encoding="utf-8"?>


<!--
This file is licensed under 'Attribution 4.0 International' license (https://creativecommons.org/licenses/by/4.0/).

You can free of charge use this code in commercial and non-commercial code, and you can freely modify and adjust the code 
as long as you give appropriate credit to the original author Dr. Tobias Weltner.

This material was published and is maintained here: 

https://powershell.one/wmi/root/cimv2/win32_1394controller#typesps1xml-file
-->


<Types>
  <Type>
    <!--@

            Applicable type. This type is produced by Get-CimInstance. 
            To extend instances produced by Get-WmiObject, change the type name to: 

            System.Management.ManagementObject#root/cimv2\Win32_1394Controller

        @-->
    <Name>Microsoft.Management.Infrastructure.CimInstance#Root/CIMV2/Win32_1394Controller</Name>
    <Members>
      <ScriptProperty>
        <Name>Availability</Name>
        <!--casting raw content to a enum. This translates numeric values to friendly text while leaving the original property value untouched:-->
        <GetScriptBlock>[Microsoft.PowerShell.Cmdletization.GeneratedTypes.Win32_1394Controller.Availability]($this.PSBase.CimInstanceProperties['Availability'].Value)</GetScriptBlock>
      </ScriptProperty>
      <ScriptProperty>
        <Name>ConfigManagerErrorCode</Name>
        <!--casting raw content to a enum. This translates numeric values to friendly text while leaving the original property value untouched:-->
        <GetScriptBlock>[Microsoft.PowerShell.Cmdletization.GeneratedTypes.Win32_1394Controller.ConfigManagerErrorCode]($this.PSBase.CimInstanceProperties['ConfigManagerErrorCode'].Value)</GetScriptBlock>
      </ScriptProperty>
      <ScriptProperty>
        <Name>PowerManagementCapabilities</Name>
        <!--casting raw content to a enum. This translates numeric values to friendly text while leaving the original property value untouched:-->
        <GetScriptBlock>[Microsoft.PowerShell.Cmdletization.GeneratedTypes.Win32_1394Controller.PowerManagementCapabilities]($this.PSBase.CimInstanceProperties['PowerManagementCapabilities'].Value)</GetScriptBlock>
      </ScriptProperty>
      <ScriptProperty>
        <Name>ProtocolSupported</Name>
        <!--casting raw content to a enum. This translates numeric values to friendly text while leaving the original property value untouched:-->
        <GetScriptBlock>[Microsoft.PowerShell.Cmdletization.GeneratedTypes.Win32_1394Controller.ProtocolSupported]($this.PSBase.CimInstanceProperties['ProtocolSupported'].Value)</GetScriptBlock>
      </ScriptProperty>
      <ScriptProperty>
        <Name>StatusInfo</Name>
        <!--casting raw content to a enum. This translates numeric values to friendly text while leaving the original property value untouched:-->
        <GetScriptBlock>[Microsoft.PowerShell.Cmdletization.GeneratedTypes.Win32_1394Controller.StatusInfo]($this.PSBase.CimInstanceProperties['StatusInfo'].Value)</GetScriptBlock>
      </ScriptProperty>
    </Members>
  </Type>
</Types>
'@ | Set-Content -LiteralPath $typesPath -Encoding UTF8

# import type definition
Update-TypeData -PrependPath $typesPath

Note: Win32_1394Controller.Types.ps1xml is using enumerations defined in ClassName.cdxml which are available only when you imported the .cdxml file via Import-Module.

Or, you can manually update the PowerShell type database using Update-TypeData.

View Update-TypeData commands for Win32_1394Controller properties
Update-TypeData -MemberName Availability -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_1394controller" -MemberType ScriptProperty  -Value {
  Enum EnumAvailability
  {
    Other                       = 1
    Unknown                     = 2
    RunningFull_Power           = 3
    Warning                     = 4
    In_Test                     = 5
    Not_Applicable              = 6
    Power_Off                   = 7
    Off_Line                    = 8
    Off_Duty                    = 9
    Degraded                    = 10
    Not_Installed               = 11
    Install_Error               = 12
    Power_Save_Unknown          = 13
    Power_Save_Low_Power_Mode   = 14
    Power_Save_Standby          = 15
    Power_Cycle                 = 16
    Power_Save_Warning          = 17
    Paused                      = 18
    Not_Ready                   = 19
    Not_Configured              = 20
    Quiesced                    = 21
  }

  [EnumAvailability]($this.PSBase.CimInstanceProperties['Availability'].Value)
} -Force

Update-TypeData -MemberName ConfigManagerErrorCode -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_1394controller" -MemberType ScriptProperty  -Value {
  Enum EnumConfigManagerErrorCode
  {
    OK                                  = 0
    CONFIG_ERROR                        = 1
    CANNOT_LOAD_DRIVER                  = 2
    LOW_MEMORY                          = 3
    REGISTRY_CORRUPTED                  = 4
    MANAGED_RESOURCE_MISSING            = 5
    BOOT_CONFIG_CONFLICT                = 6
    CANNOT_FILTER                       = 7
    DRIVER_LOADER_MISSING               = 8
    FIRMWARE_RESOURCE_PROBLEM           = 9
    DEVICE_CANNOT_START                 = 10
    DEVICE_FAILED                       = 11
    NOT_ENOUGH_FREE_RESOURCES           = 12
    CANNOT_VERIFY_RESOURCES             = 13
    RESTART_REQUIRED                    = 14
    REENUMERATION_PROBLEM               = 15
    CANNOT_IDENTIFY_RESOURCE            = 16
    UNKNOWN_RESOURCE_TYPE               = 17
    REINSTALL_DRIVERS                   = 18
    VXD_LOADER_FAILURE                  = 19
    REGISTRY_CORRUPTION                 = 20
    DEVICE_REMOVED_DUE_TO_ERROR         = 21
    DEVICE_DISABLED                     = 22
    SYSTEM_FAILURE                      = 23
    DEVICE_NOT_PRESENT                  = 24
    DEVICE_SETUP_IN_PROGRESS            = 25
    DEVICE_BEING_INSTALLED              = 26
    NO_VALID_LOG_CONFIG                 = 27
    DRIVERS_MISSING                     = 28
    DEVICE_DISABLED_MISSING_RESOURCES   = 29
    IRQ_CONFLICT                        = 30
    DRIVER_NOT_LOADED                   = 31
  }

  [EnumConfigManagerErrorCode]($this.PSBase.CimInstanceProperties['ConfigManagerErrorCode'].Value)
} -Force

Update-TypeData -MemberName ProtocolSupported -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_1394controller" -MemberType ScriptProperty  -Value {
  Enum EnumProtocolSupported
  {
    Other                              = 1
    Unknown                            = 2
    EISA                               = 3
    ISA                                = 4
    PCI                                = 5
    ATAATAPI                           = 6
    Flexible_Diskette                  = 7
    Mode1496                           = 8
    SCSI_Parallel_Interface            = 9
    SCSI_Fibre_Channel_Protocol        = 10
    SCSI_Serial_Bus_Protocol           = 11
    SCSI_Serial_Storage_Architecture   = 13
    VESA                               = 14
    PCMCIA                             = 15
    Universal_Serial_Bus               = 16
    Parallel_Protocol                  = 17
    ESCON                              = 18
    Diagnostic                         = 19
    I2C                                = 20
    Power                              = 21
    HIPPI                              = 22
    MultiBus                           = 23
    VME                                = 24
    IPI                                = 25
    IEEE_488                           = 26
    RS232                              = 27
    IEEE_8023_10BASE5                  = 28
    IEEE_8023_10BASE2                  = 29
    IEEE_8023_1BASE5                   = 30
    IEEE_8023_10BROAD36                = 31
    IEEE_8023_100BASEVG                = 32
    IEEE_8025_Token_Ring               = 33
    ANSI_X3T95_FDDI                    = 34
    MCA                                = 35
    ESDI                               = 36
    IDE                                = 37
    CMD                                = 38
    ST506                              = 39
    DSSI                               = 40
    QIC2                               = 41
    Enhanced_ATAIDE                    = 42
    AGP                                = 43
    TWIRP_two_way_infrared             = 44
    FIR_fast_infrared                  = 45
    SIR_serial_infrared                = 46
    IrBus                              = 47
    SCSI_Serial_Bus_Protocol_2         = 1394
  }

  [EnumProtocolSupported]($this.PSBase.CimInstanceProperties['ProtocolSupported'].Value)
} -Force

Update-TypeData -MemberName StatusInfo -TypeName "Microsoft.Management.Infrastructure.CimInstance#root/cimv2/win32_1394controller" -MemberType ScriptProperty  -Value {
  Enum EnumStatusInfo
  {
    Other            = 1
    Unknown          = 2
    Enabled          = 3
    Disabled         = 4
    Not_Applicable   = 5
  }

  [EnumStatusInfo]($this.PSBase.CimInstanceProperties['StatusInfo'].Value)
} -Force

Requirements

To use Win32_1394Controller, the following requirements apply:

PowerShell

Get-CimInstance was introduced with PowerShell Version 3.0, which in turn was introduced on clients with Windows 8 and on servers with Windows Server 2012.

If necessary, update Windows PowerShell to Windows PowerShell 5.1, or install PowerShell 7 side-by-side.

Operating System

Win32_1394Controller was introduced on clients with Windows Vista and on servers with Windows Server 2008.

Namespace

Win32_1394Controller lives in the namespace root/cimv2. This is the default namespace. There is no need to use the -Namespace parameter in Get-CimInstance.

Implementation

Win32_1394Controller is implemented in CIMWin32.dll and defined in CIMWin32.mof. Both files are located in the folder C:\Windows\system32\wbem:

explorer $env:windir\system32\wbem
notepad $env:windir\system32\wbem\CIMWin32.mof