Udostępnij za pośrednictwem


Zadania związane z usługą WMI: nawiązywanie połączenia z usługą WMI

Aby pobrać dane z usługi WMI, na komputerze lokalnym lub z komputera zdalnego, należy nawiązać połączenie z usługą WMI, łącząc się z określoną przestrzenią nazw . W większości przypadków użyj połączenia poprzez skrót i moniker lub lokalizatora i połączenia. Inne przykłady można znaleźć w witrynie TechNet ScriptCenter pod adresem https://www.microsoft.com/technet.

Połączenia zdalne wymagają odpowiednich ustawień zapory systemu Windows i usług DCOM. Aby uzyskać więcej informacji, zobacz Łączenie się z WMI na komputerze zdalnym i Łączenie przez Zaporę systemu Windows. Począwszy od systemu Windows Vista, kontrola konta użytkownika (UAC) może mieć wpływ na dostęp do usługi WMI. Aby uzyskać więcej informacji, zobacz Kontrola konta użytkownika i WMI.

Przykłady skryptów pokazane w tym temacie uzyskują dane tylko z komputera lokalnego. Aby uzyskać więcej informacji o sposobie uzyskiwania danych z komputerów zdalnych za pomocą skryptu, zobacz Connecting to WMI on a Remote Computer.

Poniższa procedura opisuje sposób uruchamiania skryptu.

Aby uruchomić skrypt

  1. Skopiuj kod i zapisz go w pliku z rozszerzeniem vbs, takim jak nazwa pliku.vbs. Upewnij się, że edytor tekstów nie dodaje rozszerzenia .txt do pliku.
  2. Otwórz okno wiersza polecenia i przejdź do katalogu, w którym zapisano plik.
  3. Wpisz cscript nazwa_pliku.vbs w wierszu polecenia.
  4. Jeśli nie możesz uzyskać dostępu do dziennika zdarzeń, sprawdź, czy korzystasz z wiersza polecenia z podwyższonym poziomem uprawnień. Niektóre dzienniki zdarzeń, takie jak dziennik zdarzeń zabezpieczeń, mogą być chronione przez kontrolę dostępu użytkowników (UAC).

Notatka

Domyślnie skrypt cscript wyświetla dane wyjściowe skryptu w oknie wiersza polecenia. Ponieważ skrypty usługi WMI mogą generować duże ilości danych wyjściowych, może być konieczne przekierowanie danych wyjściowych do pliku. Wpisz cscript filename.vbs > outfile.txt w wierszu polecenia, aby przekierować dane wyjściowe skryptu filename.vbs do outfile.txt.

W poniższej tabeli wymieniono przykłady skryptów, których można użyć do uzyskania różnych typów danych z komputera lokalnego.

Jak mogę... Klasy lub metody WMI
... nawiązać połączenie z komputerem zdalnym przy użyciu usługi WMI? Określ jeden z następujących elementów w ramach moniker parametrów połączenia:
  • Nazwa komputera NetBIOS, taka jak "atl-dc-01"
  • W pełni kwalifikowana nazwa domeny, taka jak "atl-dc-01.fabrikam.com"
  • Adres IPv4, taki jak "192.168.1.1"
  • Począwszy od systemu Windows Vista, można określić adres IPv6, jeśli zarówno komputer docelowy, jak i komputer, z którego wykonywane jest połączenie, obsługują IPv6.
Aby uzyskać więcej informacji, zobacz Łączenie się z WMI na komputerze zdalnym oraz Obsługa protokołu IPv6 i IPv4 w usłudze WMI.
VB
strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery ("Select * from Win32_Process")
For Each objProcess in colProcessList
    Wscript.Echo "Process Name: " & objProcess.Name 
Next
PowerShell
strComputer = "atl-dc-01"
Get-WmiObject -Class Win32_Process -ComputerName $strComputer -Namespace "root\cimv2" | format-list -Property Name
... czy uruchomić skrypt usługi WMI z użyciem alternatywnych poświadczeń?

Użyj metodySWbemLocator.ConnectServer lub IWbemLocator::ConnectServer w języku C++, a następnie dołącz odpowiednią nazwę użytkownika i hasło. Nie można zmienić poświadczeń podczas nawiązywania połączenia z komputerem lokalnym. Aby uzyskać więcej informacji, zobacz Tworzenie skryptu usługi WMI i Nawiązywanie połączenia z usługą WMI na komputerze zdalnym.

VB
strComputer = "atl-dc-01"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer (strComputer, "root\cimv2", "fabrikam\administrator", "password")
Set colProcessList = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colProcessList
    Wscript.Echo "Process Name: " & objProcess.Name 
Next
PowerShell
$StrComputer = "atl-dc-01"
$strCredentials = "FABRIKAM\administrator"
Get-WmiObject -Class Win32_Process -ComputerName $strComputer -Namespace "root\cimv2" -credential $strCredentials `
   -Impersonation Impersonate | format-list -Property Name

Zadania WMI dla skryptów i aplikacji

przykłady aplikacji WMI C++

TechNet ScriptCenter

`