AvoidUsingWMICmdlet

Livello di gravità: Avviso

Description

Questa regola rileva l'uso dei cmdlet Windows Management Instrumentation (WMI). Da PowerShell 3.0, dovresti usare i cmdlet del Common Information Model (CIM) invece dei cmdlet WMI. I cmdlet CIM sono conformi agli standard WS-Management (WSMan) e allo standard CIM, che consente la gestione di sistemi operativi Windows e non Windows.

Non usare questi cmdlet WMI:

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

Usa invece questi cmdlet CIM:

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

Example

Non conforme

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

Compliant

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