Nawiązywanie połączenia z usługą WMI przy użyciu języka VBScript
Skrypty WMI mogą skondensować wiele kroków wymaganych w programie C++. Mogą łączyć się z usługą WMI nie tylko za pośrednictwem obiektu SWbemLocator, ale także używając nazwy monikera "winmgmts:". Moniker to krótka nazwa, która lokalizuje przestrzeń nazw, klasę lub wystąpienie w usłudze WMI. Nazwa "winmgmts:" to moniker usługi WMI, który nakazuje hostowi skryptów systemu Windows używanie obiektów WMI, łączy się z domyślną przestrzenią nazw i uzyskuje obiekt SWbemServices. Inne informacje o połączeniu, takie jak poziom personifikacji lub określona klasa lub wystąpienie, są wyświetlane w parametrach po nazwie moniker. Można użyć monikerów w wywołaniach, które tworzą lub pobierają obiekty WMI. Aby uzyskać więcej informacji, zobacz Konstruowanie ciągu identyfikatora.
W poniższej procedurze opisano sposób nawiązywania połączenia z WMI, korzystając z SWbemLocator.
Aby nawiązać połączenie z usługą WMI przy użyciu SWbemLocator
Pobierz obiekt lokalizatora z wywołaniem metody CreateObject.
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Zaloguj się do przestrzeni nazw przy użyciu wywołania metody ConnectServer.
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2")
Jeśli nie określisz komputera w wywołaniu ConnectServer, usługa WMI łączy się z komputerem lokalnym. Jeśli nie określisz przestrzeni nazw, usługa WMI łączy się z przestrzenią nazw określoną w kluczu rejestru.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Default Namespace
Domyślna przestrzeń nazw to \root\cimv2. Aby uzyskać więcej informacji na temat przestrzeni nazw, zobacz Tworzenie hierarchii w WMI.
Ustaw poziom personifikacji za pomocą wywołania metody SWbemServices.Security_.
objService.Security_.ImpersonationLevel = 3
Aby uzyskać więcej informacji, zobacz Ustawianie domyślnego poziomu zabezpieczeń procesu przy użyciu języka VBScript.
Zaimplementuj przeznaczenie skryptu.
Usługa WMI uwidacznia różne obiekty skryptowe używane do uzyskiwania dostępu do danych w sieci i manipulowania nimi. Aby uzyskać więcej informacji, zobacz Manipulowanie klasą i informacjami o wystąpieniu oraz skryptowe API WMI.
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2") objService.Security_.ImpersonationLevel = 3 Set Jobs = objService.ExecQuery("SELECT * FROM Win32_ScheduledJob") i=0 For each Job in Jobs i = i+1 WScript.Echo Job.JobId & " " & Job.Command & VBNewLine Next If i = 0 Then WScript.Echo "No Jobs Scheduled with the AT command were found" End If
Poniższa procedura opisuje sposób nawiązywania połączenia z usługą WMI i pobierania obiektu przy użyciu monikera.
Aby nawiązać połączenie z usługą WMI i pobrać obiekt przy użyciu nazwy
Wywołaj GetObject za pomocą nazwy w parametrze wejściowym.
'the simple version Set MyObject = GetObject("winMgmts::Win32_scheduledJob") 'Or the more complex version strComputer = "." Set MyObject = GetObject("winMgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2:Win32_ScheduledJob")
Moiniker zawiera wiele elementów, których można użyć do nawiązania połączenia z usługą WMI:
Polecenie "winmgmts:" informuje WSH o użyciu obiektów API skryptów . W tym konkretnym przykładzie WSH będzie wiedział, że powinien zwrócić obiekt SWbemObject, który opisuje pierwszy Win32_scheduledJob w systemie. Inne możliwe obiekty do zwrócenia to SWbemCollection lub obiekt SWbemServices, w zależności od tego, co moniker opisuje.
Opcjonalnie można ustawić poziomy zabezpieczeń dla połączenia. Pamiętaj, że nie można ustawić informacji dotyczących nazwy i hasła w znaczniku. Aby uzyskać więcej informacji, zobacz Zabezpieczanie klientów skryptów.
Opcjonalnie można zdefiniować ścieżkę do obiektu WMI. Obejmuje to komputer lokalny lub zdalny, przestrzeń nazw, a także nazwę klasy. Aby uzyskać więcej informacji na temat używania vbScript GetObject w skryptach usługi WMI, zobacz Creating an Instance (Tworzenie wystąpienia) i Retrieving a WMI Instance(Pobieranie wystąpienia usługi WMI).
Zamiast pobierać pojedynczy element lub kolekcję, możesz również pobrać obiekt SWbemServices (zgodnie z opisem w poprzednim przykładzie). Następnie można wywołać dodatkowe zapytania dotyczące zwróconego obiektu.
strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob") For Each objJob in colScheduledJobs Wscript.Echo "Job ID: " & objJob.JobId & "Command: " & objJob.Command & VBNewLine Next
W poprzednim przykładzie, podszywanie się lub impersonationLevel=3 jest domyślnym poziomem zabezpieczeń procesu. W poniższym przykładzie nie jest konieczne określenie tego poziomu zabezpieczeń procesu, chyba że trzeba zmienić zabezpieczenia procesu, aby delegować. Aby uzyskać więcej informacji, zobacz Ustawianie domyślnego poziomu zabezpieczeń procesu przy użyciu języka VBScript.
Tematy pokrewne