Поделиться через


AvoidUsingWMICmdlet

Уровень серьезности: предупреждение

Описание

В PowerShell 3.0 командлеты CIM следует использовать для командлетов WMI.

Не следует использовать следующие командлеты:

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

Вместо этого используйте следующие командлеты:

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

Командлеты CIM соответствуют стандартам WS-Management (WSMan) и стандарту CIM, что позволяет управлять операционными системами Windows и другими операционными системами.

Как

Измените на эквивалентный командлет на основе CIM.

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

Пример

Неправильно

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

Правильно

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