Uzyskiwanie danych z komputera zdalnego
Możesz uzyskać dane lub zarządzać zasobami na komputerach zdalnych, a także na komputerze lokalnym. Nawiązywanie połączenia z komputerem zdalnym w skrypicie zdalnego zarządzania systemem Windows jest bardzo podobne do nawiązywania połączenia lokalnego. Dane wystąpienia usługi WMI są dostępne i jeśli komputer zdalny ma sprzęt BMC, który może komunikować się przy użyciu protokołu WS-Management, to dane Inteligentnego Interfejsu Zarządzania Platformami (IPMI) są również dostępne. Aby uzyskać więcej informacji, zobacz Windows Remote Management and WMI and Remote Hardware Management.
Może być konieczne utworzenie obiektu ConnectionOptions w celu określenia informacji o typie uwierzytelnienia żądanego dla logowania.
Jeśli konto na komputerze zdalnym ma tę samą nazwę użytkownika logowania i hasło, jedynymi dodatkowymi informacjami, których potrzebujesz, jest transport, nazwa domeny i nazwa komputera. Ze względu na kontrola konta użytkownika (UAC)konto zdalne musi być kontem domeny i członkiem grupy Administratorzy komputera zdalnego. Jeśli konto jest członkiem grupy Administratorzy na komputerze lokalnym, UAC nie zezwala na dostęp do usługi WinRM. Aby uzyskać dostęp do zdalnej usługi WinRM w grupie roboczej, filtrowanie UAC dla kont lokalnych musi być wyłączone poprzez utworzenie następującego wpisu rejestru DWORD i ustawienie jego wartości na 1: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy.
Aby nawiązać połączenie z komputerem zdalnym przy użyciu nazwy użytkownika logowania i hasła
Określ komputer docelowy z w pełni kwalifikowaną nazwą domeny lub adresem IP i przypisz go do stałej. Jeśli określono adres IPv6, adres musi być ujęta w nawiasy kwadratowe.
Const RemoteComputer = "ComputerName.domain.com"
Utwórz obiekt WSMan.
Set objWsman = CreateObject("WSMan.Automation")
Utwórz sesję, określając transport, HTTP lub HTTPS i połącz ją ze stałą reprezentującą komputer docelowy.
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
Poniższy przykład kodu VBScript przedstawia kompletny skrypt. Skrypt zawiera podroutywę służącą do przekształcania danych z nieprzetworzonego kodu XML na postać czytelną dla człowieka. Aby uzyskać więcej informacji, zobacz Wyświetlanie danych wyjściowych XML ze skryptów usługi WinRM.
Const RemoteComputer = "ComputerName.domain.com"
Set objWsman = CreateObject("WSMan.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
"wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)
While Not objResponse.AtEndOfStream
DisplayOutput(objResponse.ReadItem)
Wend
'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
Dim xmlFile, xslFile
Set xmlFile = CreateObject("MSXml.DOMDocument")
Set xslFile = CreateObject("MSXml.DOMDocument")
xmlFile.LoadXml(strWinRMXml)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
Aby nawiązać połączenie z komputerem zdalnym przy użyciu innego konta
Określ komputer docelowy z w pełni kwalifikowaną nazwą domeny lub adresem IP i przypisz go do stałej. Jeśli określono adres IPv6, adres musi być ujęta w nawiasy kwadratowe.
Const RemoteComputer = "ComputerName.domain.com"
Utwórz obiekt WSMan.
Set objWsman = CreateObject("Wsman.Automation")
Wywołaj metodę WSMan.CreateConnectionOptions, aby utworzyć obiekt ConnectionOptions. Konto na komputerze zdalnym musi należeć do grupy administratorów komputerów lokalnych.
Set objConnectionOptions = objWsman.CreateConnectionOptions objConnectionOptions.UserName = "Username" objConnectionOptions.Password = "Password"
Na wywołaniu WSman.CreateSession określ odpowiednie flagi połączenia sesji w parametrze flagach. Aby uzyskać więcej informacji, zapoznaj się z Stałymi sesji. Określ komputer docelowy z w pełni kwalifikowaną nazwą komputera lub adresem IP oraz transportem — http lub https. Ten skrypt żąda uwierzytelniania Kerberos ze zdalnej usługi WinRM.
W przeciwieństwie do skryptów usługi WMI można użyć kilku metod uwierzytelniania w skryptach usługi WinRM. Aby uzyskać więcej informacji, zobacz Authentication for Remote Connections.
iFlags = objWsman.SessionFlagUseKerberos Or _ objWsman.SessionFlagCredUserNamePassword Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _ iFlags, objConnectionOptions)
Po udostępnieniu obiektu sesji można wywołać dowolną z metod Sesja, aby uzyskać dane dla zasobu. Możesz pobrać dane dla dowolnego zasobu dostępnego na komputerze, na którym jest uruchomiona sesja. Aby uzyskać więcej informacji, zobacz Uzyskiwanie danych z komputera lokalnego.
Poniższy przykład kodu VBScript przedstawia kompletny skrypt. Skrypt zawiera podroutywę służącą do przekształcania danych z nieprzetworzonego kodu XML na postać czytelną dla człowieka. Aby uzyskać więcej informacji, zobacz Wyświetlanie danych wyjściowych XML ze skryptów usługi WinRM. Skrypt określa uwierzytelnianie Kerberos, ale jeśli komputer zdalny znajduje się w grupie roboczej, a nie w domenie, określenie protokołu Kerberos generuje błąd.
Const RemoteComputer = "ComputerName.domain.com"
Set objWsman = CreateObject("Wsman.Automation")
Set objConnectionOptions = objWsman.CreateConnectionOptions
objConnectionOptions.UserName = "Username"
objConnectionOptions.Password = "Password"
iFlags = objWsman.SessionFlagUseKerberos Or _
objWsman.SessionFlagCredUserNamePassword
Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
iFlags, objConnectionOptions)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
"wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)
While Not objResponse.AtEndOfStream
DisplayOutput(objResponse.ReadItem)
Wend
'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
Dim xmlFile, xslFile
Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0")
Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
xmlFile.LoadXml(strWinRMXml)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
Tematy pokrewne