Compartir a través de


Invoke-WmiMethod

Llama a los métodos de WMI.

Sintaxis

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>]

Description

El Invoke-WmiMethod cmdlet llama a los métodos de objetos de Instrumental de administración de Windows (WMI).

Los nuevos cmdlets de Common Information Model (CIM), introducidos en Windows PowerShell 3.0, realizan las mismas tareas que los cmdlets de WMI. Los cmdlets CIM cumplen con los estándares WS-Management (WSMan) y con el estándar CIM, lo que permite a los cmdlets usar las mismas técnicas para administrar equipos Windows y aquellos que ejecutan otros sistemas operativos. En lugar de usar Invoke-WmiMethod, considere la posibilidad de usar Invoke-CimMethod.

Ejemplos

Ejemplo 1: Enumerar el orden necesario de los parámetros del método WMI

Este comando muestra el orden requerido de los objetos.

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)

Para invocar a WMI en PowerShell 3.0, no se puede hacer igual que en métodos alternativos. En este caso es necesario escribir los valores de objeto en un orden específico.

Ejemplo 2: Iniciar una instancia de una aplicación

([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   :

Este comando inicia una instancia del Bloc de notas llamando al Create método de la clase Win32_Process .

La propiedad ReturnValue se rellena con un 0y la propiedad ProcessId se rellena con un entero (el siguiente número de identificador de proceso) si se completa el comando.

Ejemplo 3: Cambiar el nombre de un archivo

$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

Este comando cambia el nombre de un archivo. Usa el parámetro Path para hacer referencia a una instancia de la clase CIM_DataFile . A continuación, se aplica el método Rename a esa instancia concreta.

La propiedad ReturnValue se rellena con un 0 si se completa el comando.

Ejemplo 4: Pasar una matriz de valores mediante '-ArgumentList'

Un ejemplo mediante una matriz de objetos $binSD seguidos de un $null valor.

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

Parámetros

-ArgumentList

Especifica los parámetros que se pasarán al método llamado. El valor de este parámetro debe ser una matriz de objetos y deben aparecer en el orden requerido por el método llamado. El Invoke-CimCommand cmdlet no tiene estas limitaciones.

Para determinar el orden en el que se enumeran esos objetos, ejecute el GetMethodParameters() método en la clase WMI, como se muestra en el ejemplo 1, cerca del final de este tema.

Importante

Si el primer valor es una matriz que contiene más de un elemento, se requiere un segundo valor de $null . De lo contrario, el comando genera un error, como Unable to cast object of type 'System.Byte' to type 'System.Array'.. Vea el ejemplo 4 anterior.

Tipo:Object[]
Alias:Args
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-AsJob

Indica que este cmdlet ejecuta el comando como un trabajo en segundo plano. Use este parámetro para ejecutar comandos que tardan mucho tiempo en finalizar.

Cuando se usa el parámetro AsJob , el comando devuelve un objeto que representa el trabajo en segundo plano y, a continuación, muestra el símbolo del sistema. Puede seguir trabajando en la sesión mientras finaliza el trabajo. Si Invoke-WmiMethod se usa en un equipo remoto, el trabajo se crea en el equipo local y los resultados de los equipos remotos se devuelven automáticamente al equipo local. Para administrar el trabajo, use los cmdlets que contienen el Job nombre (los cmdlets de trabajo). Para obtener los resultados del trabajo, use el Receive-Job cmdlet .

para usar este parámetro con equipos remotos, los equipos locales y remotos deben configurarse para la comunicación remota. Además, debe iniciar Windows PowerShell mediante la opción Ejecutar como administrador en Windows Vista y versiones posteriores de Windows. Para obtener más información, consulte about_Remote_Requirements.

Para obtener más información sobre los trabajos en segundo plano de Windows PowerShell, consulte about_Jobs y about_Remote_Jobs.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Authentication

Especifica el nivel de autenticación que se va a utilizar con la conexión de WMI. Los valores permitidos para este parámetro son los siguientes:

  • -1: sin cambios
  • 0: valor predeterminado
  • 1: Ninguno (sin autenticación en realizado).
  • 2: la conexión (la autenticación solo se realiza cuando el cliente establece una relación con la aplicación).
  • 3: llamada (la autenticación solo se realiza al principio de cada llamada cuando la aplicación recibe la solicitud).
  • 4: paquete (la autenticación se realiza en todos los datos recibidos del cliente).
  • 5: PacketIntegrity (Todos los datos que se transfieren entre el cliente y la aplicación se autentican y comprueban).
  • 6: PacketPrivacy (se usan las propiedades de los demás niveles de autenticación y todos los datos están cifrados).
Tipo:AuthenticationLevel
Valores aceptados:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Authority

Especifica la autoridad que se usará para autenticar la conexión WMI. Puede especificar la autenticación Estándar de Windows NT LAN Manager (NTLM) o Kerberos. Para usar NTLM, establezca la configuración ntlmdomain:<DomainName>de autoridad en , donde <DomainName> identifica un nombre de dominio NTLM válido. Para usar Kerberos, especifique kerberos:<DomainName>\<ServerName>. No puede incluir la configuración de autoridad al conectarse al equipo local.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Class

Especifica la clase de WMI que contiene un método estático al que se va a llamar.

Tipo:String
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ComputerName

Especifica, como matriz de cadenas, los equipos en los que este cmdlet ejecuta el comando. La opción predeterminada es el equipo local.

Escriba el nombre NetBIOS, una dirección IP o un nombre de dominio completo de uno o más equipos. Para especificar el equipo local, escriba el nombre del equipo, un punto (.) o localhost.

Este parámetro no utiliza la comunicación remota de Windows PowerShell. Puede usar el parámetro ComputerName incluso si el equipo no está configurado para ejecutar comandos remotos.

Tipo:String[]
Alias:Cn
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

Tipo:SwitchParameter
Alias:cf
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Credential

Especifica una cuenta de usuario con permiso para realizar esta acción. El valor predeterminado es el usuario actual. Escriba un nombre de usuario, como User01, Domain01\User01o User@Contoso.com. O bien, escriba un objeto PSCredential , como un objeto devuelto por el Get-Credential cmdlet . Cuando escriba un nombre de usuario, se le solicitará una contraseña.

Tipo:PSCredential
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-EnableAllPrivileges

Indica que este cmdlet habilita todos los privilegios del usuario actual antes de que el comando realice la llamada WMI.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Impersonation

Especifica el nivel de suplantación que usar. Los valores permitidos para este parámetro son los siguientes:

  • 0: Valor predeterminado (lee el registro local para el nivel de suplantación predeterminado, que normalmente se establece 3en : Suplantación).
  • 1: Anónimo (oculta las credenciales del autor de la llamada).
  • 2: identifica (permite a los objetos consultar las credenciales del autor de la llamada).
  • 3: suplantación (permite que los objetos usen las credenciales del autor de la llamada).
  • 4: delegado (permite a los objetos permitir que otros objetos usen las credenciales del autor de la llamada).
Tipo:ImpersonationLevel
Valores aceptados:Default, Anonymous, Identify, Impersonate, Delegate
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputObject

Especifica un objeto ManagementObject que se va a usar como entrada. Cuando se usa este parámetro, se omiten todos los demás parámetros excepto los parámetros Flag y Argument .

Tipo:ManagementObject
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Locale

Especifica la configuración regional preferida para objetos WMI. Especifique el valor del parámetro Configuración regional como una matriz en el formato en el MS_<LCID> orden preferido.

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Name

Especifica el nombre del método que se va a invocar. Este parámetro es obligatorio y no puede ser nulo ni vacío.

Tipo:String
Posición:1
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Namespace

Cuando se usa con el parámetro Class , este parámetro especifica el espacio de nombres del repositorio WMI donde se encuentra la clase o el objeto WMI al que se hace referencia.

Tipo:String
Alias:NS
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Path

Especifica la ruta de acceso del objeto de WMI de una clase de WMI o especifica la ruta de acceso del objeto de WMI de una instancia de una clase de WMI. La clase o la instancia que especifique deben contener el método especificado en el parámetro Name .

Tipo:String
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ThrottleLimit

Especifica un valor de limitación para el número de operaciones WMI que se pueden ejecutar simultáneamente. Este parámetro se usa junto con el parámetro AsJob . El límite solo se aplica al comando actual, no a la sesión ni al equipo.

Tipo:Int32
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

Tipo:SwitchParameter
Alias:wi
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

None

Este cmdlet no acepta entradas.

Salidas

None

Este cmdlet no genera ningún resultado.

Notas

Windows PowerShell incluye los siguientes alias para Invoke-WmiMethod:

  • iwmi