Invoke-WmiMethod
Chiama i metodi di WMI.
Sintassi
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>]
Descrizione
Il Invoke-WmiMethod
cmdlet chiama i metodi degli oggetti Strumentazione gestione Windows (WMI).
I nuovi cmdlet CIM (Common Information Model), introdotti in Windows PowerShell 3.0, eseguono le stesse attività dei cmdlet WMI. I cmdlet CIM sono conformi agli standard WS-Management (WSMan) e allo standard CIM, che consente ai cmdlet di usare le stesse tecniche per gestire i computer Windows e quelli che eseguono altri sistemi operativi. Invece di usare Invoke-WmiMethod
, è consigliabile usare Invoke-CimMethod.
Esempio
Esempio 1: Elencare l'ordine richiesto dei parametri del metodo WMI
Questo comando elenca l'ordine degli oggetti richiesto.
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)
Il metodo per richiamare WMI in PowerShell 3.0 è diverso dai metodi alternativi e richiede l'immissione dei valori degli oggetti in un ordine specifico.
Esempio 2: Avviare un'istanza di un'applicazione
([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 :
Questo comando avvia un'istanza del Blocco note chiamando il Create
metodo della classe Win32_Process .
La proprietà ReturnValue viene popolata con un 0
e la proprietà ProcessId viene popolata con un numero intero (il numero ID processo successivo) se il comando viene completato.
Esempio 3: Rinominare un file
$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
Questo comando rinomina un file. Usa il parametro Path per fare riferimento a un'istanza della classe CIM_DataFile . Quindi applica il metodo Rename a questa specifica istanza.
La proprietà ReturnValue viene popolata con un 0
oggetto se il comando viene completato.
Esempio 4: Passaggio di una matrice di valori con '-ArgumentList'
Esempio che usa una matrice di oggetti $binSD
seguita da un $null
valore .
$acl = Get-Acl test.txt
$binSD = $acl.GetSecurityDescriptorBinaryForm()
$invokeWmiMethodSplat = @{
Class = 'Win32_SecurityDescriptorHelper'
Name = 'BinarySDToSDDL'
ArgumentList = $binSD, $null
}
Invoke-WmiMethod @invokeWmiMethodSplat
Parametri
-ArgumentList
Specifica i parametri da passare al metodo chiamato. Il valore di questo parametro deve essere una matrice di oggetti e deve essere visualizzato nell'ordine richiesto dal metodo chiamato. Il Invoke-CimCommand
cmdlet non presenta queste limitazioni.
Per determinare l'ordine in cui elencare tali oggetti, eseguire il GetMethodParameters()
metodo sulla classe WMI, come illustrato nell'esempio 1, alla fine di questo argomento.
Importante
Se il primo valore è una matrice che contiene più di un elemento, è necessario un secondo valore di $null
. In caso contrario, il comando genera un errore, ad esempio Unable to cast object of type 'System.Byte' to type 'System.Array'.
. Vedere l'esempio 4 precedente.
Tipo: | Object[] |
Alias: | Args |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-AsJob
Indica che questo cmdlet esegue il comando come processo in background. Usare questo parametro per eseguire comandi il cui completamento richiede molto tempo.
Quando si usa il parametro AsJob , il comando restituisce un oggetto che rappresenta il processo in background e quindi visualizza il prompt dei comandi. È possibile continuare a lavorare nella sessione mentre il processo viene completato. Se Invoke-WmiMethod
viene utilizzato in un computer remoto, il processo viene creato nel computer locale e i risultati dei computer remoti vengono restituiti automaticamente al computer locale. Per gestire il processo, usare i cmdlet che contengono il Job
sostantivo (cmdlet job). Per ottenere i risultati del processo, usare il Receive-Job
cmdlet .
per usare questo parametro con computer remoti, è necessario che i computer locali e remoti vengano configurati per la comunicazione remota. Inoltre, è necessario avviare Windows PowerShell usando l'opzione Esegui come amministratore in Windows Vista e versioni successive di Windows. Per altre informazioni, vedere about_Remote_Requirements.
Per altre informazioni sui processi in background di Windows PowerShell, vedere about_Jobs e about_Remote_Jobs.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Authentication
Specifica il livello di autenticazione da usare con la connessione WMI. I valori validi per questo parametro sono:
-1
: non modificato0
: impostazione predefinita1
: nessuno (nessuna autenticazione eseguita).2
: connessione (l'autenticazione viene eseguita solo quando il client stabilisce una relazione con l'applicazione).3
: chiamata (l'autenticazione viene eseguita solo all'inizio di ogni chiamata quando l'applicazione riceve la richiesta).4
: il pacchetto (l'autenticazione viene eseguita su tutti i dati ricevuti dal client).5
: PacketIntegrity (tutti i dati trasferiti tra il client e l'applicazione vengono autenticati e verificati).6
: PacketPrivacy (vengono usate le proprietà degli altri livelli di autenticazione e tutti i dati vengono crittografati).
Tipo: | AuthenticationLevel |
Valori accettati: | Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Authority
Specifica l'autorità da usare per autenticare la connessione WMI. È possibile specificare l'autenticazione NT LAN Manager (NTLM) o Kerberos standard. Per usare NTLM, impostare l'impostazione dell'autorità su ntlmdomain:<DomainName>
, dove <DomainName>
identifica un nome di dominio NTLM valido. Per usare Kerberos, specificare kerberos:<DomainName>\<ServerName>
. Non è possibile includere l'impostazione dell'autorità quando ci si connette al computer locale.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Class
Specifica la classe WMI che contiene un metodo statico da chiamare.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ComputerName
Specifica, come matrice di stringhe, i computer in cui questo cmdlet esegue il comando . Il valore predefinito è il computer locale.
Digitare il nome NetBIOS, un indirizzo IP o un nome di dominio completo di uno o più computer. Per specificare il computer locale, digitare il nome del computer, un punto (.
) o localhost
.
Questo parametro non si basa sulla comunicazione remota di Windows PowerShell. È possibile utilizzare il parametro ComputerName anche se il computer non è configurato per eseguire comandi remoti.
Tipo: | String[] |
Alias: | Cn |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Credential
Specifica un account utente che dispone delle autorizzazioni per eseguire questa azione. Il valore predefinito è l'utente corrente. Digitare un nome utente, ad esempio User01
, Domain01\User01
o User@Contoso.com
. In alternativa, immettere un oggetto PSCredential , ad esempio un oggetto restituito dal Get-Credential
cmdlet . Quando si digita un nome utente, viene richiesta una password.
Tipo: | PSCredential |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-EnableAllPrivileges
Indica che questo cmdlet abilita tutti i privilegi dell'utente corrente prima che il comando effettui la chiamata WMI.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Impersonation
Specifica il livello di rappresentazione da usare. I valori validi per questo parametro sono:
0
: valore predefinito (legge il Registro di sistema locale per il livello di rappresentazione predefinito, che in genere è impostato su3
: Impersonate).1
: anonimo (nasconde le credenziali del chiamante).2
: identificazione (consente agli oggetti di eseguire query sulle credenziali del chiamante.3
: rappresentazione (consente agli oggetti di usare le credenziali del chiamante.4
: delegato (consente agli oggetti di consentire ad altri oggetti di usare le credenziali del chiamante).
Tipo: | ImpersonationLevel |
Valori accettati: | Default, Anonymous, Identify, Impersonate, Delegate |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-InputObject
Specifica un oggetto ManagementObject da utilizzare come input. Quando si usa questo parametro, tutti gli altri parametri ad eccezione dei parametri Flag e Argument vengono ignorati.
Tipo: | ManagementObject |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Locale
Specifica le impostazioni locali preferite per gli oggetti WMI. Specificare il valore del parametro Locale come matrice nel MS_<LCID>
formato nell'ordine preferito.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Name
Specifica il nome del metodo da richiamare. Questo parametro è obbligatorio e non può essere Null o vuoto.
Tipo: | String |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Namespace
Se usato con il parametro Class , questo parametro specifica lo spazio dei nomi del repository WMI in cui si trova la classe o l'oggetto WMI a cui si fa riferimento.
Tipo: | String |
Alias: | NS |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Path
Specifica il percorso dell'oggetto WMI di una classe WMI oppure il percorso dell'oggetto WMI di un'istanza di una classe WMI. La classe o l'istanza specificata deve contenere il metodo specificato nel parametro Name .
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-ThrottleLimit
Specifica un valore di limitazione per il numero di operazioni WMI che possono essere eseguite contemporaneamente. Questo parametro viene usato insieme al parametro AsJob . Questo valore limite si applica solo al comando corrente, non alla sessione o al computer.
Tipo: | Int32 |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Tipo: | SwitchParameter |
Alias: | wi |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
None
Questo cmdlet non accetta alcun input.
Output
None
Questo cmdlet non genera alcun output.
Note
Windows PowerShell include gli alias seguenti per Invoke-WmiMethod
:
iwmi