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


Invoke-WmiMethod

Вызывает методы WMI.

Синтаксис

Invoke-WmiMethod
      [-Class] <String>
      [-Name] <String>
      [-ArgumentList <Object[]>]
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      -InputObject <ManagementObject>
      [-Name] <String>
      [-ArgumentList <Object[]>]
      [-AsJob]
      [-ThrottleLimit <Int32>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      -Path <String>
      [-Name] <String>
      [-ArgumentList <Object[]>]
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      [-Name] <String>
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      [-Name] <String>
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Invoke-WmiMethod
      [-Name] <String>
      [-AsJob]
      [-Impersonation <ImpersonationLevel>]
      [-Authentication <AuthenticationLevel>]
      [-Locale <String>]
      [-EnableAllPrivileges]
      [-Authority <String>]
      [-Credential <PSCredential>]
      [-ThrottleLimit <Int32>]
      [-ComputerName <String[]>]
      [-Namespace <String>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Описание

Командлет Invoke-WmiMethod вызывает методы объектов инструментария управления Windows (WMI).

Новые командлеты Common Information Model (CIM), представленные в Windows PowerShell 3.0, выполняют те же задачи, что и командлеты WMI. Командлеты CIM соответствуют стандартам WS-Management (WSMan) и стандарту CIM, что позволяет командлетам использовать те же методы для управления компьютерами Windows и другими операционными системами. Вместо использования Invoke-WmiMethodрекомендуется использовать Invoke-CimMethod.

Примеры

Пример 1. Перечисление требуемого порядка параметров метода WMI

Эта команда перечисляет требуемый порядок объектов.

Get-WmiObject Win32_Volume |
    Get-Member -MemberType Method -Name Format |
    Select-Object -ExpandProperty Definition

System.Management.ManagementBaseObject Format(System.String FileSystem, System.Boolean QuickFormat,
 System.UInt32 ClusterSize, System.String Label, System.Boolean EnableCompression,
 System.UInt32 Version)

Для вызова WMI в PowerShell 3.0 отличается от альтернативных методов и требуется, чтобы значения объектов вводятся в определенном порядке.

Пример 2. Запуск экземпляра приложения

([Wmiclass]'Win32_Process').Create.OverloadDefinitions

System.Management.ManagementBaseObject Create(System.String CommandLine, System.String CurrentDirectory,
 System.Management.ManagementObject#Win32_ProcessStartup ProcessStartupInformation)

Invoke-WmiMethod -Path Win32_Process -Name Create -ArgumentList C:\Windows\system32\notepad.exe

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 2
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ProcessId        : 11312
ReturnValue      : 0
PSComputerName   :

Эта команда запускает экземпляр Блокнота, вызвав метод Create класса Win32_Process.

Свойство returnValue заполняется 0, а свойство ProcessId заполняется целым числом (номером идентификатора следующего процесса), если команда завершена.

Пример 3. Переименование файла

$invokeWmiMethodSplat = @{
    Path = "CIM_DataFile.Name='C:\scripts\test.txt'"
    Name = 'Rename'
    ArgumentList = 'C:\scripts\test_bu.txt'
}
Invoke-WmiMethod @invokeWmiMethodSplat

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 0

Эта команда переименовывает файл. Он использует параметр Path для ссылки на экземпляр класса CIM_DataFile. Затем он применяет метод Переименования к конкретному экземпляру.

Свойство ReturnValue заполняется 0, если команда завершена.

Пример 4. Передача массива значений с помощью "-ArgumentList"

Пример использования массива объектов $binSD за которым следует значение $null.

$acl = Get-Acl test.txt
$binSD = $acl.GetSecurityDescriptorBinaryForm()
$invokeWmiMethodSplat = @{
    Class = 'Win32_SecurityDescriptorHelper'
    Name = 'BinarySDToSDDL'
    ArgumentList = $binSD, $null
}
Invoke-WmiMethod @invokeWmiMethodSplat

Параметры

-ArgumentList

Задает параметры, передаваемые в вызываемой метод. Значение этого параметра должно быть массивом объектов, и они должны отображаться в порядке, необходимом для вызываемого метода. Командлет Invoke-CimCommand не имеет этих ограничений.

Чтобы определить порядок перечисления этих объектов, выполните метод GetMethodParameters() в классе WMI, как показано в примере 1, в конце этого раздела.

Важный

Если первое значение является массивом, содержащим несколько элементов, требуется второе значение $null. В противном случае команда создает ошибку, например Unable to cast object of type 'System.Byte' to type 'System.Array'.. См. пример 4 выше.

Тип:Object[]
Aliases:Args
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-AsJob

Указывает, что этот командлет выполняет команду в качестве фонового задания. Используйте этот параметр для выполнения команд, которые занимают много времени.

При использовании параметра AsJob команда возвращает объект, представляющий фоновое задание, а затем отображает командную строку. Вы можете продолжать работать в сеансе, пока задание завершится. Если Invoke-WmiMethod используется для удаленного компьютера, задание создается на локальном компьютере, а результаты с удаленных компьютеров автоматически возвращаются на локальный компьютер. Чтобы управлять заданием, используйте командлеты, содержащие существительное Job (командлеты задания). Чтобы получить результаты задания, используйте командлет Receive-Job.

Чтобы использовать этот параметр с удаленными компьютерами, локальные и удаленные компьютеры должны быть настроены для удаленного взаимодействия. Кроме того, необходимо запустить Windows PowerShell с помощью параметра запуска от имени администратора в Windows Vista и более поздних версиях Windows. Дополнительные сведения см. в about_Remote_Requirements.

Дополнительные сведения о фоновых заданиях Windows PowerShell см. в about_Jobs и about_Remote_Jobs.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Authentication

Указывает уровень проверки подлинности, используемый с подключением WMI. Допустимые значения для этого параметра:

  • -1: без изменений
  • 0: по умолчанию
  • 1: Нет (проверка подлинности не выполнена.)
  • 2: Connect (проверка подлинности выполняется только в том случае, если клиент устанавливает связь с приложением.)
  • 3: вызов (проверка подлинности выполняется только в начале каждого вызова, когда приложение получает запрос.)
  • 4: пакетной (проверка подлинности выполняется для всех данных, полученных от клиента.)
  • 5: PacketIntegrity (все данные, передаваемые между клиентом и приложением, проходят проверку подлинности и проверяются).)
  • 6: PacketPrivacy (используются свойства других уровней проверки подлинности, а все данные шифруются).)
Тип:AuthenticationLevel
Допустимые значения:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Authority

Указывает центр, используемый для проверки подлинности подключения WMI. Можно указать стандартную проверку подлинности Windows NT LAN Manager (NTLM) или Kerberos. Чтобы использовать NTLM, задайте для параметра центра значение ntlmdomain:<DomainName>, где <DomainName> определяет допустимое доменное имя NTLM. Чтобы использовать Kerberos, укажите kerberos:<DomainName>\<ServerName>. Параметр центра нельзя включить при подключении к локальному компьютеру.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Class

Указывает класс WMI, содержащий статический метод для вызова.

Тип:String
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ComputerName

Указывает в виде строкового массива компьютеры, на которые этот командлет выполняется команда. По умолчанию используется локальный компьютер.

Введите имя NetBIOS, IP-адрес или полное доменное имя одного или нескольких компьютеров. Чтобы указать локальный компьютер, введите имя компьютера, точку (.) или localhost.

Этот параметр не зависит от удаленного взаимодействия Windows PowerShell. Вы можете использовать параметр ComputerName, даже если компьютер не настроен для выполнения удаленных команд.

Тип:String[]
Aliases:Cn
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Confirm

Запрашивает подтверждение перед запуском командлета.

Тип:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Credential

Указывает учетную запись пользователя, которая имеет разрешение на выполнение этого действия. По умолчанию используется текущий пользователь. Введите имя пользователя, например User01, Domain01\User01или User@Contoso.com. Или введите объект PSCredential, например объект, возвращаемый командлетом Get-Credential. При вводе имени пользователя вам будет предложено ввести пароль.

Тип:PSCredential
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-EnableAllPrivileges

Указывает, что этот командлет включает все привилегии текущего пользователя перед выполнением вызова WMI.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Impersonation

Указывает используемый уровень олицетворения. Допустимые значения для этого параметра:

  • 0: по умолчанию (считывает локальный реестр для уровня олицетворения по умолчанию, который обычно имеет значение 3: олицетворение.)
  • 1: анонимный (скрывает учетные данные вызывающего объекта.)
  • 2: идентификации (позволяет объектам запрашивать учетные данные вызывающего объекта.)
  • 3: олицетворения (позволяет объектам использовать учетные данные вызывающего объекта.)
  • 4: делегировать (позволяет объектам разрешать другим объектам использовать учетные данные вызывающего объекта.)
Тип:ImpersonationLevel
Допустимые значения:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-InputObject

Указывает объект ManagementObject, используемый в качестве входных данных. Если этот параметр используется, все остальные параметры, кроме Flag и Argument, игнорируются.

Тип:ManagementObject
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Locale

Задает предпочтительный языковой стандарт для объектов WMI. Укажите значение параметра языкового стандарта в качестве массива в формате MS_<LCID> в предпочтительном порядке.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Name

Указывает имя вызываемого метода. Этот параметр является обязательным и не может быть пустым или пустым.

Тип:String
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Namespace

При использовании с параметром класса этот параметр указывает пространство имен репозитория WMI, в котором находится указанный класс или объект WMI.

Тип:String
Aliases:NS
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Path

Указывает путь объекта WMI класса WMI или указывает путь объекта WMI экземпляра класса WMI. Класс или указанный экземпляр должен содержать метод, указанный в параметре Name.

Тип:String
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ThrottleLimit

Задает значение регулирования для числа операций WMI, которые могут выполняться одновременно. Этот параметр используется вместе с параметром AsJob. Ограничение регулирования применяется только к текущей команде, а не к сеансу или к компьютеру.

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-WhatIf

Показывает, что произойдет, если командлет выполняется. Командлет не выполняется.

Тип:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

None

Этот командлет не принимает входные данные.

Выходные данные

None

Этот командлет не создает выходные данные.

Примечания

Windows PowerShell включает следующие псевдонимы для Invoke-WmiMethod:

  • iwmi