Invoke-WmiMethod
Llama a métodos 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 cmdlet Invoke-WmiMethod
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 enumera el orden necesario 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 WMI en PowerShell 3.0 difiere de los métodos alternativos y requiere que los valores de objeto se escriban 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 método Create
de la clase Win32_Process.
La propiedad ReturnValue se rellena con un 0
y la propiedad ProcessId de 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, aplica el método Rename a esa instancia determinada.
La propiedad ReturnValue se rellena con un 0
si se completa el comando.
Ejemplo 4: Pasar una matriz de valores mediante '-ArgumentList'
Ejemplo que usa una matriz de objetos $binSD
seguido de un valor de $null
.
$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 van a pasar 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 cmdlet Invoke-CimCommand
no tiene estas limitaciones.
Para determinar el orden en el que se enumeran esos objetos, ejecute el método GetMethodParameters()
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 continuar trabajando en la sesión mientras finaliza el trabajo. Si se usa Invoke-WmiMethod
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 nombre de Job
(los cmdlets de trabajo). Para obtener los resultados del trabajo, use el cmdlet Receive-Job
.
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, vea 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 usar con la conexión WMI. Los valores aceptables para este parámetro son:
-
-1
: sin cambios -
0
: predeterminado -
1
: Ninguno (sin autenticación realizada). -
2
: Connect (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
: de paquetes (la autenticación se realiza en todos los datos que se reciben 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 se cifran todos los datos).
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 va a 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 de autoridad en ntlmdomain:<DomainName>
, 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 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. El valor predeterminado es el equipo local.
Escriba el nombre NetBIOS, una dirección IP o un nombre de dominio completo de uno o varios equipos. Para especificar el equipo local, escriba el nombre del equipo, un punto (.
) o localhost
.
Este parámetro no se basa en 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 pide 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 que tiene 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 cmdlet Get-Credential
. Al escribir un nombre de usuario, se le pedirá 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 se va a usar. Los valores aceptables para este parámetro son:
-
0
: predeterminado (lee el registro local para el nivel de suplantación predeterminado, que normalmente se establece en3
: suplantación). -
1
: anónimo (oculta las credenciales del autor de la llamada). -
2
: Identificar (permite a los objetos consultar las credenciales del autor de la llamada). -
3
: suplantar (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 los objetos WMI. Especifique el valor del parámetro configuración regional como una matriz en el formato MS_<LCID>
en el 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 estar 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 WMI de una clase WMI o especifica la ruta de acceso del objeto WMI de una instancia de una clase WMI. La clase o la instancia que especifique deben contener el método especificado en el parámetro name 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 de AsJob. El límite solo se aplica al comando actual, no a la sesión o 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 el cmdlet se ejecuta. 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 ninguna entrada.
Salidas
None
Este cmdlet no genera ninguna salida.
Notas
Windows PowerShell incluye los siguientes alias para Invoke-WmiMethod
:
iwmi