원격 컴퓨터에서 데이터 가져오기

원격 컴퓨터와 로컬 컴퓨터에서 데이터를 가져오거나 리소스를 관리할 수 있습니다. Windows 원격 관리 스크립트에서 원격 컴퓨터에 연결하는 것은 로컬 연결을 만드는 것과 매우 유사합니다. WMI instance 데이터를 사용할 수 있으며 원격 컴퓨터에 WS-Management 프로토콜을 사용하여 통신할 수 있는 BMC 하드웨어가 있는 경우 IPMI(지능형 플랫폼 관리 인터페이스) 데이터도 사용할 수 있습니다. 자세한 내용은 Windows 원격 관리 및 WMI 및원격 하드웨어 관리를 참조하세요.

ConnectionOptions 개체를 만들어 로그온에 요청된 인증 유형에 대한 정보를 지정해야 할 수 있습니다.

원격 컴퓨터의 계정에 동일한 로그온 사용자 이름과 암호가 있는 경우 필요한 유일한 추가 정보는 전송, 도메인 이름 및 컴퓨터 이름입니다. UAC(사용자 계정 컨트롤)로 인해 원격 계정은 도메인 계정 및 원격 컴퓨터 Administrators 그룹의 구성원이어야 합니다. 계정이 Administrators 그룹의 로컬 컴퓨터 구성원인 경우 UAC는 WinRM 서비스에 대한 액세스를 허용하지 않습니다. 작업 그룹의 원격 WinRM 서비스에 액세스하려면 다음 DWORD 레지스트리 항목을 만들고 해당 값을 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy로 설정하여 로컬 계정에 대한 UAC 필터링을 사용하지 않도록 설정해야 합니다.

로그온 사용자 이름 및 암호를 사용하여 원격 컴퓨터에 연결하려면

  1. 정규화된 도메인 이름 또는 IP 주소를 사용하여 대상 컴퓨터를 지정하고 상수에 할당합니다. IPv6 주소가 지정된 경우 주소는 대괄호로 묶어야 합니다.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. WSMan 개체를 만듭니다.

    Set objWsman = CreateObject("WSMan.Automation")
    
  3. 세션을 만들고 전송, HTTP 또는 HTTPS를 지정하고 대상 컴퓨터를 나타내는 상수와 연결합니다.

    
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    

다음 VBScript 코드 예제에서는 전체 스크립트를 보여줍니다. 스크립트에는 데이터를 원시 XML에서 사람이 읽을 수 있는 형식으로 변환하는 서브루틴이 포함되어 있습니다. 자세한 내용은 WinRM 스크립트에서 XML 출력 표시를 참조하세요.

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

다른 계정을 사용하여 원격 컴퓨터에 연결하려면

  1. 정규화된 도메인 이름 또는 IP 주소를 사용하여 대상 컴퓨터를 지정하고 상수에 할당합니다. IPv6 주소가 지정된 경우 주소는 대괄호로 묶어야 합니다.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. WSMan 개체를 만듭니다.

    Set objWsman = CreateObject("Wsman.Automation")
    
    
  3. WSMan.CreateConnectionOptions 메서드를 호출하여 ConnectionOptions 개체를 만듭니다. 원격 컴퓨터의 계정은 로컬 컴퓨터 관리자 그룹의 구성원이어야 합니다.

    Set objConnectionOptions = objWsman.CreateConnectionOptions
    objConnectionOptions.UserName = "Username"
    objConnectionOptions.Password = "Password"
    
  4. WSman.CreateSession 호출에서 flags 매개 변수에 적절한 세션 연결 플래그를 지정합니다. 자세한 내용은 세션 상수를 참조하세요. 정규화된 컴퓨터 이름 또는 IP 주소와 전송(http 또는 https)을 사용하여 대상 컴퓨터를 지정합니다. 이 스크립트는 원격 WinRM 서비스에서 Kerberos 인증을 요청합니다.

    WMI 스크립트와 달리 WinRM 스크립트에서 여러 인증 방법을 사용할 수 있습니다. 자세한 내용은 원격 연결 인증을 참조하세요.

    iFlags = objWsman.SessionFlagUseKerberos Or _
      objWsman.SessionFlagCredUserNamePassword
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
      iFlags, objConnectionOptions)
    
  5. 세션 개체를 사용할 수 있게 된 후에는 Session 개체 메서드를 호출하여 리소스에 대한 데이터를 가져올 수 있습니다. 세션이 실행 중인 컴퓨터에서 사용할 수 있는 모든 리소스에 대한 데이터를 가져올 수 있습니다. 자세한 내용은 로컬 컴퓨터에서 데이터 가져오기를 참조하세요.

다음 VBScript 코드 예제에서는 전체 스크립트를 보여줍니다. 스크립트에는 데이터를 원시 XML에서 사람이 읽을 수 있는 형식으로 변환하는 서브루틴이 포함되어 있습니다. 자세한 내용은 WinRM 스크립트에서 XML 출력 표시를 참조하세요. 스크립트는 Kerberos 인증을 지정하지만 원격 컴퓨터가 도메인이 아닌 작업 그룹에 있는 경우 Kerberos를 지정하면 오류가 발생합니다.

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

Windows 원격 관리 정보

Windows 원격 관리 사용

Windows 원격 관리 참조