Invoke-WmiMethod
Ruft WMI-Methoden auf.
Syntax
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>]
Beschreibung
Das Invoke-WmiMethod
Cmdlet ruft die Methoden von WMI-Objekten (Windows Management Instrumentation) auf.
Neue common Information Model (CIM)-Cmdlets, die in Windows PowerShell 3.0 eingeführt wurden, führen dieselben Aufgaben wie die WMI-Cmdlets aus. Die CIM-Cmdlets entsprechen den WS-Management-Standards (WSMan) und dem CIM-Standard, mit dem die Cmdlets dieselben Techniken zum Verwalten von Windows-Computern und anderen Betriebssystemen verwenden können. Statt zu verwenden Invoke-WmiMethod
, sollten Sie die Verwendung von Invoke-CimMethod in Betracht ziehen.
Beispiele
Beispiel 1: Auflisten der erforderlichen Reihenfolge der WMI-Methodenparameter
In diesem Befehl ist die erforderliche Reihenfolge der Objekte aufgeführt.
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)
Das Aufrufen von WMI in PowerShell 3.0 unterscheidet sich von anderen Methoden. Darüber hinaus müssen Objektwerte in einer bestimmten Reihenfolge eingegeben werden.
Beispiel 2: Starten einer Instanz einer Anwendung
([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 :
Mit diesem Befehl wird eine Instanz des Editor gestartet, indem die Create
Methode der Win32_Process-Klasse aufgerufen wird.
Die ReturnValue-Eigenschaft wird mit einer 0
Auffüllung gefüllt, und die ProcessId-Eigenschaft wird mit einer ganzen Zahl (der nächsten Prozess-ID-Nummer) aufgefüllt, wenn der Befehl abgeschlossen ist.
Beispiel 3: Umbenennen einer Datei
$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
Mit diesem Befehl wird eine Datei umbenannt. Er verwendet den Path-Parameter , um auf eine Instanz der CIM_DataFile-Klasse zu verweisen. Anschließend wird die Rename-Methode auf die betreffende Instanz angewendet.
Die ReturnValue-Eigenschaft wird mit einer 0
aufgefüllt, wenn der Befehl abgeschlossen ist.
Beispiel 4: Übergeben eines Arrays mit Werten mithilfe von "-ArgumentList"
Beispiel für die Verwendung eines Arrays von Objekten $binSD
, gefolgt von einem $null
Wert.
$acl = Get-Acl test.txt
$binSD = $acl.GetSecurityDescriptorBinaryForm()
$invokeWmiMethodSplat = @{
Class = 'Win32_SecurityDescriptorHelper'
Name = 'BinarySDToSDDL'
ArgumentList = $binSD, $null
}
Invoke-WmiMethod @invokeWmiMethodSplat
Parameter
-ArgumentList
Gibt die Parameter an, die an die aufgerufene Methode übergeben werden sollen. Der Wert dieses Parameters muss ein Array von Objekten sein, und sie müssen in der Reihenfolge angezeigt werden, die von der aufgerufenen Methode benötigt wird. Das Invoke-CimCommand
Cmdlet hat diese Einschränkungen nicht.
Um die Reihenfolge zu bestimmen, in der diese Objekte aufgeführt werden sollen, führen Sie die GetMethodParameters()
Methode für die WMI-Klasse aus, wie in Beispiel 1 dargestellt, am Ende dieses Themas.
Wichtig
Wenn der erste Wert ein Array ist, das mehr als ein Element enthält, ist ein zweiter Wert $null
erforderlich. Andernfalls generiert der Befehl einen Fehler, z Unable to cast object of type 'System.Byte' to type 'System.Array'.
. B. . Siehe Beispiel 4 oben.
Typ: | Object[] |
Aliase: | Args |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-AsJob
Gibt an, dass dieses Cmdlet den Befehl als Hintergrundauftrag ausführt. Verwenden Sie diesen Parameter, um Befehle auszuführen, deren Ausführung viel Zeit in Anspruch nimmt.
Wenn Sie den AsJob-Parameter verwenden, gibt der Befehl ein Objekt zurück, das den Hintergrundauftrag darstellt, und zeigt dann die Eingabeaufforderung an. Sie können die Sitzung weiterhin verwenden, während der Auftrag abgeschlossen wird. Wenn Invoke-WmiMethod
er für einen Remotecomputer verwendet wird, wird der Auftrag auf dem lokalen Computer erstellt, und die Ergebnisse von Remotecomputern werden automatisch an den lokalen Computer zurückgegeben. Verwenden Sie zum Verwalten des Auftrags die Cmdlets, die das Job
Substantiv (die Cmdlets "Auftrag") enthalten. Verwenden Sie das Receive-Job
Cmdlet, um die Auftragsergebnisse abzurufen.
Um diesen Parameter für Remotecomputer zu verwenden, müssen lokale Computer und Remotecomputer für Remoting konfiguriert werden. Darüber hinaus müssen Sie Windows PowerShell mit der Option "Als Administrator ausführen" in Windows Vista und höheren Versionen von Windows starten. Weitere Informationen finden Sie unter about_Remote_Requirements.
Weitere Informationen zu Windows PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs und about_Remote_Jobs.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Authentication
Gibt die für die WMI-Verbindung zu verwendende Authentifizierungsebene an. Zulässige Werte für diesen Parameter:
-1
: Unverändert0
: Standard1
: Keine (keine Authentifizierung ausgeführt.)2
: Verbinden (Authentifizierung wird nur ausgeführt, wenn der Client eine Beziehung mit der Anwendung herstellt.)3
: Anruf (Die Authentifizierung wird nur am Anfang jedes Anrufs ausgeführt, wenn die Anwendung die Anforderung empfängt.)4
: Paket (Authentifizierung wird für alle Daten ausgeführt, die vom Client empfangen werden.)5
: PacketIntegrity (Alle Daten, die zwischen dem Client und der Anwendung übertragen werden, werden authentifiziert und überprüft.)6
: PacketPrivacy (Die Eigenschaften der anderen Authentifizierungsstufen werden verwendet, und alle Daten werden verschlüsselt.)
Typ: | AuthenticationLevel |
Zulässige Werte: | Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Authority
Gibt die Autorität an, die zum Authentifizieren der WMI-Verbindung verwendet werden soll. Sie können die Standardmäßige Windows NT LAN Manager (NTLM) oder Kerberos-Authentifizierung angeben. Um NTLM zu verwenden, legen Sie die Autoritätseinstellung auf ntlmdomain:<DomainName>
, wobei <DomainName>
ein gültiger NTLM-Domänenname identifiziert wird. Um Kerberos zu verwenden, geben Sie an kerberos:<DomainName>\<ServerName>
. Sie können die Authority-Einstellung nicht einschließen, wenn Sie eine Verbindung mit dem lokalen Computer herstellen.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Class
Gibt die WMI-Klasse an, die eine aufzurufende statische Methode enthält.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ComputerName
Gibt als Zeichenfolgenarray die Computer an, auf denen dieses Cmdlet den Befehl ausführt. Die Standardeinstellung ist der lokale Computer.
Geben Sie den NetBIOS-Namen, eine IP-Adresse oder den vollqualifizierten Domänennamen eines Computers oder mehrerer Computer ein. Um den lokalen Computer anzugeben, geben Sie den Computernamen, einen Punkt (.
) oder localhost
einen .
Dieser Parameter beruht nicht auf Windows PowerShell-Remoting. Sie können den Parameter "ComputerName " auch dann verwenden, wenn Ihr Computer nicht für die Ausführung von Remotebefehlen konfiguriert ist.
Typ: | String[] |
Aliase: | Cn |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.
Typ: | SwitchParameter |
Aliase: | cf |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Credential
Gibt ein Benutzerkonto an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Der Standardwert ist der aktuelle Benutzer. Geben Sie einen Benutzernamen ein, z User01
. B. , Domain01\User01
oder User@Contoso.com
. Oder geben Sie ein PSCredential-Objekt ein, z. B. ein Objekt, das vom Get-Credential
Cmdlet zurückgegeben wird. Wenn Sie einen Benutzernamen eingeben, werden Sie zur Eingabe eines Kennworts aufgefordert.
Typ: | PSCredential |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-EnableAllPrivileges
Gibt an, dass dieses Cmdlet alle Berechtigungen des aktuellen Benutzers aktiviert, bevor der Befehl den WMI-Aufruf vorgibt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Impersonation
Gibt die zu verwendende Identitätswechselebene an. Zulässige Werte für diesen Parameter:
0
: Standard (Liest die lokale Registrierung für die Standardidentitätswechselebene, die normalerweise auf3
: Identitätswechsel festgelegt ist.)1
: Anonym (Blendet die Anmeldeinformationen des Aufrufers aus.)2
: Identifizieren (Ermöglicht Es Objekten, die Anmeldeinformationen des Aufrufers abzufragen.)3
: Identitätswechsel (Ermöglicht es Objekten, die Anmeldeinformationen des Aufrufers zu verwenden.)4
: Delegieren (Ermöglicht Objekten die Verwendung der Anmeldeinformationen des Aufrufers durch andere Objekte.)
Typ: | ImpersonationLevel |
Zulässige Werte: | Default, Anonymous, Identify, Impersonate, Delegate |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-InputObject
Gibt ein ManagementObject-Objekt an, das als Eingabe verwendet werden soll. Wenn dieser Parameter verwendet wird, werden alle anderen Parameter außer den Parametern "Flag " und "Argument " ignoriert.
Typ: | ManagementObject |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Locale
Gibt das bevorzugte Gebietsschema für WMI-Objekte an. Geben Sie den Wert des Gebietsschemaparameters als Array im Format in der MS_<LCID>
bevorzugten Reihenfolge an.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Name
Gibt den Namen der aufzurufenden Methode an. Dieser Parameter ist erforderlich und kann nicht NULL oder leer sein.
Typ: | String |
Position: | 1 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Namespace
Bei Verwendung mit dem Parameter "Class " gibt dieser Parameter den WMI-Repositorynamespace an, in dem sich die referenzierte WMI-Klasse oder das Objekt befindet.
Typ: | String |
Aliase: | NS |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Path
Gibt den WMI-Objektpfad einer WMI-Klasse oder den WMI-Objektpfad einer Instanz einer WMI-Klasse an. Die angegebene Klasse oder Instanz muss die im Parameter Name angegebene Methode enthalten.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ThrottleLimit
Gibt einen Drosselungswert für die Anzahl der WMI-Vorgänge an, die gleichzeitig ausgeführt werden können. Dieser Parameter wird zusammen mit dem AsJob-Parameter verwendet. Die Drosselungsgrenze gilt nur für den aktuellen Befehl und nicht für die Sitzung oder den Computer.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Typ: | SwitchParameter |
Aliase: | wi |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
None
Dieses Cmdlet nimmt keine Eingabe an.
Ausgaben
None
Dieses Cmdlet generiert keine Ausgabe.
Hinweise
Windows PowerShell enthält die folgenden Aliase für Invoke-WmiMethod
:
iwmi