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 0
y 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 cambios0
: valor predeterminado1
: 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\User01
o 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 establece3
en : 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