Skip to main content
powershell/PSAvoidUsingWMICmdlet is a PSScriptAnalyzer diagnostic emitted by tally for PowerShell snippets embedded in Dockerfiles.

Description

As of PowerShell 3.0, the CIM cmdlets should be used over the WMI cmdlets. The following cmdlets should not be used:
  • Get-WmiObject
  • Remove-WmiObject
  • Invoke-WmiMethod
  • Register-WmiEvent
  • Set-WmiInstance
Use the following cmdlets instead:
  • Get-CimInstance
  • Remove-CimInstance
  • Invoke-CimMethod
  • Register-CimIndicationEvent
  • Set-CimInstance
The CIM cmdlets comply with WS-Management (WSMan) standards and with the Common Information Model (CIM) standard, allowing for the management of Windows and non-Windows operating systems.

How

Change to the equivalent CIM-based cmdlet.
  • Get-WmiObject -> Get-CimInstance
  • Remove-WmiObject -> Remove-CimInstance
  • Invoke-WmiMethod -> Invoke-CimMethod
  • Register-WmiEvent -> Register-CimIndicationEvent
  • Set-WmiInstance -> Set-CimInstance

Examples

Problematic code

Correct code

Source

This rule documentation is adapted from Microsoft’s PSScriptAnalyzer documentation for AvoidUsingWMICmdlet, licensed under CC BY 4.0.