Zdalne zarządzanie systemem Windows i usługa WMI
Zdalne zarządzanie systemem Windows może służyć do pobierania danych udostępnianych przez instrumentację zarządzania Windows (WMI i mi). Dane usługi WMI można uzyskać za pomocą skryptów lub aplikacji korzystających z interfejsu API skryptów usługi WinRM lub za pomocą narzędzia wiersza polecenia Winrm.
Usługa WinRM obsługuje większość znanych klas i operacji WMI, w tym obiektów osadzonych. Usługa WinRM może wykorzystać usługę WMI do zbierania danych dotyczących zasobów lub zarządzania zasobami w systemie operacyjnym Windows. Oznacza to, że można uzyskać dane dotyczące obiektów, takich jak dyski, karty sieciowe, usługi lub procesy w przedsiębiorstwie za pomocą istniejącego zestawu klas usługi WMI . Dostęp do danych sprzętowych dostępnych można również uzyskać za pomocą standardowego dostawcy usługi WMI IPMI.
Identyfikowanie zasobu usługi WMI
Klasę WMI można odwołać jako zasobów w usłudze WinRM i w protokole WS-Management: typ jednostki zarządzanej, taki jak usługa lub dysk.
Klasa lub metoda WMI jest identyfikowana przez identyfikator URI , podobnie jak w przypadku korzystania z protokołu WS-Management. Identyfikator URI może określać zasób WMI (klasa), akcję WMI (metoda) lub zidentyfikować określone wystąpienie klasy w komunikatach wysyłanych przez sieć. Aby uzyskać więcej informacji, zobacz identyfikatory URI zasobów.
Konstruowanie prefiksu identyfikatora URI dla klas WMI
Prefiks identyfikatora URI zawiera stałą część i przestrzeń nazw usługi WMI. Na przykład prefiks identyfikatora URI w systemie Windows Server zawierający stałą część prefiksu to: http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>
. Umożliwia to wygenerowanie prefiksu identyfikatora URI dla dowolnej przestrzeni nazw usługi WMI. Aby na przykład uzyskać dostęp do przestrzeni nazw root\default WMI, użyj następującego prefiksu identyfikatora URI: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/
.
Większość klas WMI do zarządzania należy root\cimv2 przestrzeni nazw. Aby uzyskać dostęp do klas i wystąpień w root\cimv2 przestrzeni nazw, użyj prefiksu identyfikatora URI: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
. Aby uzyskać więcej informacji, zobacz identyfikatory URI zasobów.
Generowanie kompletnego identyfikatora URI dla klas WMI
Identyfikator URI, który podajesz, do Winrm narzędzia wiersza polecenia lub skryptu, składa się z prefiksu oraz specyfikacji zasobu.
Poniższa procedura opisuje sposób generowania identyfikatora URI zasobu w celu uzyskania klasy WMI lub użycia w operacji wyliczania.
Aby wygenerować identyfikator URI zasobu dla klasy WMI
Zacznij od prefiksu, który wskazuje, że należy użyć schematu protokołu WS-Management.
https://schemas.microsoft.com/wbem/wsman/1
Prefiks identyfikatora URI zasobu dla klas WMI jest zawsze taki sam. Aby uzyskać więcej informacji, zobacz prefiksy identyfikatorów URI.
Dodaj przestrzeń nazw usługi WMI do prefiksu.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
Dodaj nazwę klasy.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service
Aby ustawić wartość właściwości lub wywołać określoną metodę, dodaj wymaganą wartość klucza lub wartości dla klasy.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt
Jeśli pozostawisz wartość klucza pustą, nie zmienisz oryginalnej wartości właściwości.
Nuta
Pozostawienie wartości klucza pustego powoduje ustawienie wartości właściwości na wartość null.
Lokalizowanie zasobu usługi WMI za pomocą usługi WinRM
Dane usługi WMI można uzyskać za pomocą narzędzia wiersza polecenia, winrmlub za pomocą skryptu języka Visual Basic korzystającego z interfejsu API skryptów usługi WinRM . Nie używasz ścieżki usługi WMI do lokalizowania zasobu. Zamiast tego należy przekonwertować przestrzeń nazw i hierarchię usługi WMI na identyfikator URI .
Identyfikator URI usługi WinRM dla klasy WMI zawiera dwie części: prefiks identyfikatora URI i klasę, do której chcesz uzyskać dostęp.
Na przykład następujący identyfikator URI można podać do metody Session.Enumerate, aby wyświetlić listę wszystkich usług na komputerze. Prefiks identyfikatora URI jest http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
, a klasa jest Win32_Service.
strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
W usłudze WMI wyświetl listę danych dla wszystkich wystąpień zasobu lub klasy na kilka sposobów:
Zapytanie dotyczące wszystkich wystąpień tego zasobu.
Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")
Wywołanie polecenia SWbemServices.InstancesOf lub SWbemObject.Instances_.
Set colServices = InstancesOf("Win32_Service")
W usłudze WinRM istnieje jeden sposób, aby wyświetlić listę wszystkich wystąpień zasobu: Session.Enumerate.
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )
Lokalizowanie określonego wystąpienia zasobu usługi WMI
W usłudze WMI można wyznaczyć określone wystąpienie klasy, określając wartości dla właściwości klucza lub wysyłając zapytanie o wystąpienie zgodne z listą wartości właściwości. Właściwości klucza mają kwalifikator klucza usługi WMI .
Określone wystąpienie klasy można uzyskać na kilka sposobów:
Wywołanie Session.Enumerate za pomocą filtru i parametrów dialektu w celu utworzenia zapytania.
RemoteComputer = "servername.domain.com" strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL" strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*" Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer) strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'" Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
Wywołanie polecenia SWbemServices.Get. W przypadku Session.Getnależy podać co najmniej jedną konkretną wartość klucza poprzedzoną znakiem zapytania (?).
Format identyfikatora URI dla określonego wystąpienia to
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Value
.strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
Klasa WMI może mieć więcej niż jeden klucz. Pary nazwa-wartość klucza są oddzielone znakiem "+". W takim przypadku format to:
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2
.Składnia usługi WinRM umożliwiająca uzyskanie pojedynczego obiektu WMI różni się od usługi WMI. Singleton to zdefiniowana klasa WMI, dzięki czemu dozwolone jest tylko jedno wystąpienie. Win32_CurrentTime lub Win32_WMISetting to przykłady pojedynczej klasy WMI.
Składnia usługi WMI dla pojedynczych dysków jest wyświetlana w poniższym przykładzie kodu VBScript.
Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
W poniższym przykładzie pokazano składnię pojedynczego modułu WinRM, która nie używa znaku "@".
strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
Dodanie selektora do obiektuResourceLocator lub obiektu IWSManResourceLoc ator.
Poniższy przykład kodu VBScript pokazuje, jak za pomocą selektora uzyskać określone wystąpienie Win32_Processor.
strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor" Set objWsman = CreateObject("Wsman.Automation") Set Session = objWsman.CreateSession Set Locator = objWsman.CreateResourceLocator(strUri) Locator.AddSelector "DeviceID", "CPU0"
Tematy pokrewne
-
Informacje o zdalnego zarządzania systemem Windows
-
wykonywanie skryptów w zarządzania zdalnego systemu Windows