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 di Blocco note chiamando il Create metodo della classe Win32_Process.

La proprietà ReturnValue viene popolata con un 0e 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.

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

Specifica il livello di autenticazione da usare con la connessione WMI. I valori validi per questo parametro sono:

  • -1: non modificato
  • 0: impostazione predefinita
  • 1: 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).
Type:AuthenticationLevel
Accepted values:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Class

Specifica la classe WMI che contiene un metodo statico da chiamare.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Richiede conferma prima di eseguire il cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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\User01o 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.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableAllPrivileges

Indica che questo cmdlet abilita tutti i privilegi dell'utente corrente prima che il comando effettui la chiamata WMI.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 su 3: 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).
Type:ImpersonationLevel
Accepted values:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:ManagementObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Specifica il nome del metodo da richiamare. Questo parametro è obbligatorio e non può essere Null o vuoto.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Aliases:NS
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 .

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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