Freigeben über


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 Cmdlet Invoke-WmiMethod 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 WS-Management (WSMan)-Standards und dem CIM-Standard, mit dem die Cmdlets dieselben Techniken zum Verwalten von Windows-Computern und anderen Betriebssystemen verwenden können. Anstatt Invoke-WmiMethodzu verwenden, sollten Sie Invoke-CimMethodverwenden.

Beispiele

Beispiel 1: Auflisten der erforderlichen Reihenfolge der WMI-Methodenparameter

Dieser Befehl listet die erforderliche Reihenfolge der Objekte auf.

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)

Um WMI in PowerShell 3.0 aufzurufen, unterscheidet sich von alternativen Methoden und erfordert, dass 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 einem 0aufgefü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 diese bestimmte Instanz angewendet.

Die ReturnValue-eigenschaft wird mit einem 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 Cmdlet Invoke-CimCommand 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 am Ende dieses Themas dargestellt.

Wichtig

Wenn der erste Wert ein Array ist, das mehr als ein Element enthält, ist ein zweiter Wert von $null erforderlich. Andernfalls generiert der Befehl einen Fehler, z. B. Unable to cast object of type 'System.Byte' to type 'System.Array'.. 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, die lange dauern.

Wenn Sie den parameter AsJob verwenden, gibt der Befehl ein Objekt zurück, das den Hintergrundauftrag darstellt, und zeigt dann die Eingabeaufforderung an. Sie können weiterhin in der Sitzung arbeiten, während der Auftrag abgeschlossen ist. Wenn Invoke-WmiMethod 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 Cmdlet Receive-Job, um die Auftragsergebnisse abzurufen.

Um diesen Parameter mit Remotecomputern zu verwenden, müssen die lokalen 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 Authentifizierungsebene an, die mit der WMI-Verbindung verwendet werden soll. Die zulässigen Werte für diesen Parameter sind:

  • -1: Unverändert
  • 0: Standard-
  • 1: Keine (Keine Authentifizierung wurde ausgeführt.)
  • 2: Connect (Die Authentifizierung wird nur ausgeführt, wenn der Client eine Beziehung mit der Anwendung herstellt.)
  • 3: Anruf (Die Authentifizierung erfolgt nur zu Beginn jedes Anrufs, wenn die Anwendung die Anforderung empfängt.)
  • 4: Paket- (Die 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>fest, wobei <DomainName> einen gültigen NTLM-Domänennamen identifiziert. Geben Sie kerberos:<DomainName>\<ServerName>an, um Kerberos zu verwenden. Sie können die Autoritätseinstellung 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 statische Methode zum Aufrufen 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. Der Standardwert ist der lokale Computer.

Geben Sie den NetBIOS-Namen, eine IP-Adresse oder einen vollqualifizierten Domänennamen eines oder mehrerer Computer ein. Um den lokalen Computer anzugeben, geben Sie den Computernamen, einen Punkt (.) oder localhostein.

Dieser Parameter basiert nicht auf Windows PowerShell-Remoting. Sie können den parameter ComputerName verwenden, auch 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

Fordert Sie vor dem Ausführen des Cmdlets zur Bestätigung auf.

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. Die Standardeinstellung ist der aktuelle Benutzer. Geben Sie einen Benutzernamen ein, z. B. User01, Domain01\User01oder User@Contoso.com. Oder geben Sie ein PSCredential--Objekt ein, z. B. ein Objekt, das vom Cmdlet Get-Credential 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. Die zulässigen Werte für diesen Parameter sind:

  • 0: Standard- (Liest die lokale Registrierung für die Standardidentitätswechselebene, die normalerweise auf 3festgelegt ist: Identitätswechsel.)
  • 1: Anonyme (Blendet die Anmeldeinformationen des Anrufers 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: Delegat (Ermöglicht Es Objekten, anderen Objekten die Verwendung der Anmeldeinformationen des Aufrufers zu ermöglichen.)
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 dem Flag und Argument Parameter 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 Gebietsschema--Parameters als Array im MS_<LCID> Format in der bevorzugten Reihenfolge an.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Name

Gibt den Namen der methode an, die aufgerufen werden soll. Dieser Parameter ist obligatorisch und darf nicht null oder leer sein.

Typ:String
Position:1
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Namespace

Wenn dieser Parameter mit dem parameter Class verwendet wird, 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 an oder gibt 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 parameter AsJob verwendet. Der Drosselungsgrenzwert gilt nur für den aktuellen Befehl, 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 passiert, 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 akzeptiert keine Eingaben.

Ausgaben

None

Dieses Cmdlet generiert keine Ausgabe.

Hinweise

Windows PowerShell enthält die folgenden Aliase für Invoke-WmiMethod:

  • iwmi