Udostępnij za pośrednictwem


Invoke-WmiMethod

Wywołuje metody WMI.

Składnia

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>]

Opis

Polecenie Invoke-WmiMethod cmdlet wywołuje metody obiektów Instrumentacja zarządzania Windows (WMI).

Nowe polecenia cmdlet modelu wspólnych informacji (CIM) wprowadzone w programie Windows PowerShell 3.0 wykonują te same zadania co polecenia cmdlet usługi WMI. Polecenia cmdlet ciM są zgodne ze standardami WS-Management (WSMan) i standardem CIM, który umożliwia poleceń cmdlet używanie tych samych technik do zarządzania komputerami z systemem Windows i tymi, na których działają inne systemy operacyjne. Zamiast używać metody Invoke-WmiMethod, rozważ użycie metody Invoke-CimMethod.

Przykłady

Przykład 1. Wyświetlanie listy wymaganych kolejności parametrów metody WMI

To polecenie wyświetla listę wymaganej kolejności obiektów.

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)

Aby wywołać usługę WMI w programie PowerShell 3.0 różni się od metod alternatywnych i wymaga wprowadzenia wartości obiektów w określonej kolejności.

Przykład 2. Uruchamianie wystąpienia aplikacji

([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   :

To polecenie uruchamia wystąpienie Notatnika, wywołując Create metodę klasy Win32_Process .

Właściwość ReturnValue jest wypełniana wartością 0, a właściwość ProcessId jest wypełniana liczbą całkowitą (następnym numerem identyfikatora procesu), jeśli polecenie zostanie ukończone.

Przykład 3. Zmiana nazwy pliku

$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

To polecenie zmienia nazwę pliku. Używa parametru Path , aby odwołać się do wystąpienia klasy CIM_DataFile . Następnie stosuje metodę Rename do tego konkretnego wystąpienia.

Właściwość ReturnValue jest wypełniana wartością 0 , jeśli polecenie zostało ukończone.

Przykład 4. Przekazywanie tablicy wartości przy użyciu elementu "-ArgumentList"

Przykład użycia tablicy $binSD obiektów, po których następuje $null wartość.

$acl = Get-Acl test.txt
$binSD = $acl.GetSecurityDescriptorBinaryForm()
$invokeWmiMethodSplat = @{
    Class = 'Win32_SecurityDescriptorHelper'
    Name = 'BinarySDToSDDL'
    ArgumentList = $binSD, $null
}
Invoke-WmiMethod @invokeWmiMethodSplat

Parametry

-ArgumentList

Określa parametry, które mają być przekazywane do wywoływanej metody. Wartość tego parametru musi być tablicą obiektów i muszą być wyświetlane w kolejności wymaganej przez wywołaną metodę. Polecenie Invoke-CimCommand cmdlet nie ma tych ograniczeń.

Aby określić kolejność wyświetlania listy tych obiektów, uruchom metodę GetMethodParameters() w klasie WMI, jak pokazano w przykładzie 1, pod koniec tego tematu.

Ważne

Jeśli pierwsza wartość jest tablicą zawierającą więcej niż jeden element, wymagana jest druga wartość $null . W przeciwnym razie polecenie generuje błąd, taki jak Unable to cast object of type 'System.Byte' to type 'System.Array'.. Zobacz przykład 4 powyżej.

Typ:Object[]
Aliasy:Args
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-AsJob

Wskazuje, że to polecenie cmdlet uruchamia polecenie jako zadanie w tle. Użyj tego parametru, aby uruchomić polecenia, które zajmują dużo czasu.

Gdy używasz parametru AsJob , polecenie zwraca obiekt reprezentujący zadanie w tle, a następnie wyświetla wiersz polecenia. Możesz kontynuować pracę w sesji, gdy zadanie zostanie zakończone. Jeśli Invoke-WmiMethod jest używany na komputerze zdalnym, zadanie jest tworzone na komputerze lokalnym, a wyniki z komputerów zdalnych są automatycznie zwracane do komputera lokalnego. Aby zarządzać zadaniem, użyj poleceń cmdlet zawierających Job wartość noun (polecenia cmdlet zadania). Aby uzyskać wyniki zadania, użyj Receive-Job polecenia cmdlet .

Aby użyć tego parametru z komputerami zdalnymi, należy skonfigurować komputery lokalne i zdalne na potrzeby komunikacji zdalnej. Ponadto należy uruchomić program Windows PowerShell przy użyciu opcji Uruchom jako administrator w systemie Windows Vista i nowszych wersjach systemu Windows. Aby uzyskać więcej informacji, zobacz about_Remote_Requirements.

Aby uzyskać więcej informacji na temat zadań w tle programu Windows PowerShell, zobacz about_Jobs i about_Remote_Jobs.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Authentication

Określa poziom uwierzytelniania, który ma być używany z połączeniem usługi WMI. Dopuszczalne wartości tego parametru to:

  • -1: bez zmian
  • 0: Wartość domyślna
  • 1: Brak (nie wykonano uwierzytelniania).
  • 2: Połącz (Uwierzytelnianie jest wykonywane tylko wtedy, gdy klient ustanawia relację z aplikacją).
  • 3: Wywołanie (Uwierzytelnianie jest wykonywane tylko na początku każdego wywołania, gdy aplikacja odbiera żądanie).
  • 4: Pakiet (Uwierzytelnianie jest wykonywane na wszystkich danych odbieranych od klienta).
  • 5: PacketIntegrity (Wszystkie dane przesyłane między klientem a aplikacją są uwierzytelniane i weryfikowane).
  • 6: PacketPrivacy (używane są właściwości innych poziomów uwierzytelniania, a wszystkie dane są szyfrowane).
Typ:AuthenticationLevel
Dopuszczalne wartości:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Authority

Określa urząd używany do uwierzytelniania połączenia usługi WMI. Można określić standardowe uwierzytelnianie Protokołu Kerberos lub Windows NT LAN Manager (NTLM). Aby użyć protokołu NTLM, ustaw ustawienie urzędu na ntlmdomain:<DomainName>, gdzie <DomainName> identyfikuje prawidłową nazwę domeny NTLM. Aby użyć protokołu Kerberos, określ wartość kerberos:<DomainName>\<ServerName>. Nie można dołączyć ustawienia urzędu podczas nawiązywania połączenia z komputerem lokalnym.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Class

Określa klasę WMI zawierającą metodę statyczną do wywołania.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-ComputerName

Określa, jako tablicę ciągów, komputery, na których to polecenie cmdlet uruchamia polecenie . Wartość domyślna to komputer lokalny.

Wpisz nazwę NetBIOS, adres IP lub w pełni kwalifikowaną nazwę domeny jednego lub kilku komputerów. Aby określić komputer lokalny, wpisz nazwę komputera, kropkę (.) lub localhost.

Ten parametr nie opiera się na komunikacji zdalnej programu Windows PowerShell. Można użyć parametru ComputerName , nawet jeśli komputer nie jest skonfigurowany do uruchamiania poleceń zdalnych.

Typ:String[]
Aliasy:Cn
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Credential

Określa konto użytkownika, które ma uprawnienia do wykonania tej akcji. Wartość domyślna to użytkownik bieżący. Wpisz nazwę użytkownika, taką jak User01, Domain01\User01lub User@Contoso.com. Możesz też wprowadzić obiekt PSCredential , taki jak obiekt zwracany przez Get-Credential polecenie cmdlet. Podczas wpisywania nazwy użytkownika zostanie wyświetlony monit o podanie hasła.

Typ:PSCredential
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-EnableAllPrivileges

Wskazuje, że to polecenie cmdlet włącza wszystkie uprawnienia bieżącego użytkownika przed wykonaniem wywołania usługi WMI.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Impersonation

Określa poziom personifikacji do użycia. Dopuszczalne wartości tego parametru to:

  • 0: Wartość domyślna (odczytuje rejestr lokalny dla domyślnego poziomu personifikacji, który jest zwykle ustawiony na 3wartość : Personifikuj).
  • 1: Anonimowe (ukrywa poświadczenia obiektu wywołującego).
  • 2: Zidentyfikuj (umożliwia obiektom wykonywanie zapytań dotyczących poświadczeń obiektu wywołującego).
  • 3: Personifikuj (umożliwia obiektom używanie poświadczeń obiektu wywołującego).
  • 4: Delegat (Umożliwia obiektom zezwolenie innym obiektom na używanie poświadczeń obiektu wywołującego).
Typ:ImpersonationLevel
Dopuszczalne wartości:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-InputObject

Określa obiekt ManagementObject , który ma być używany jako dane wejściowe. Jeśli ten parametr jest używany, wszystkie inne parametry z wyjątkiem parametrów Flaga i Argument są ignorowane.

Typ:ManagementObject
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Locale

Określa preferowane ustawienia regionalne dla obiektów WMI. Określ wartość parametru Ustawienia regionalne jako tablicę w MS_<LCID> formacie w preferowanej kolejności.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Name

Określa nazwę metody do wywołania. Ten parametr jest obowiązkowy i nie może być pusty ani mieć wartości null.

Typ:String
Position:1
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Namespace

W przypadku użycia z parametrem Class ten parametr określa przestrzeń nazw repozytorium WMI, w której znajduje się przywoływali klasa lub obiekt WMI.

Typ:String
Aliasy:NS
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Path

Określa ścieżkę obiektu WMI klasy WMI lub określa ścieżkę obiektu WMI wystąpienia klasy WMI. Klasa lub określone wystąpienie musi zawierać metodę określoną w parametrze Name .

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-ThrottleLimit

Określa wartość ograniczenia liczby operacji WMI, które można wykonać jednocześnie. Ten parametr jest używany razem z parametrem AsJob . Limit ograniczania ma zastosowanie tylko do bieżącego polecenia, a nie do sesji ani do komputera.

Typ:Int32
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

None

To polecenie cmdlet nie akceptuje żadnych danych wejściowych.

Dane wyjściowe

None

To polecenie cmdlet nie generuje żadnych danych wyjściowych.

Uwagi

Program Windows PowerShell zawiera następujące aliasy dla programu Invoke-WmiMethod:

  • iwmi