Compartir a través de


AvoidUsingWMICmdlet

Nivel de gravedad: Advertencia

Descripción

A partir de PowerShell 3.0, los cmdlets CIM se deben usar a través de los cmdlets de WMI.

No se deben usar los siguientes cmdlets:

  • Get-WmiObject
  • Remove-WmiObject
  • Invoke-WmiMethod
  • Register-WmiEvent
  • Set-WmiInstance

En su lugar, use los siguientes cmdlets:

  • Get-CimInstance
  • Remove-CimInstance
  • Invoke-CimMethod
  • Register-CimIndicationEvent
  • Set-CimInstance

Los cmdlets CIM cumplen con los estándares WS-Management (WSMan) y con el estándar Common Information Model (CIM), lo que permite la administración de sistemas operativos Windows y no Windows.

Cómo

Cambie al cmdlet basado en CIM equivalente.

  • Get-WmiObject ->Get-CimInstance
  • Remove-WmiObject ->Remove-CimInstance
  • Invoke-WmiMethod ->Invoke-CimMethod
  • Register-WmiEvent ->Register-CimIndicationEvent
  • Set-WmiInstance ->Set-CimInstance

Ejemplo

Incorrecto

Get-WmiObject -Query 'Select * from Win32_Process where name LIKE "myprocess%"' | Remove-WmiObject
Invoke-WmiMethod -Class Win32_Process -Name 'Create' -ArgumentList @{ CommandLine = 'notepad.exe' }

Correcto

Get-CimInstance -Query 'Select * from Win32_Process where name LIKE "myprocess%"' | Remove-CIMInstance
Invoke-CimMethod -ClassName Win32_Process -MethodName 'Create' -Arguments @{ CommandLine = 'notepad.exe' }