다음을 통해 공유


WinRM 스크립트에서 XML 출력 표시

Windows 원격 관리 스크립트는 개체가 아닌 XML을 반환합니다. XML은 사람이 읽을 수 있는 형식이 아닙니다. MSXML API 및 미리 설치된 XSL 파일의 메서드를 사용하여 데이터를 사람이 읽을 수 있는 형식으로 변환할 수 있습니다.

WinRM XML 출력 및 원시 및 형식이 지정된 XML의 예제에 대한 자세한 내용은 Windows 원격 관리의 스크립팅을 참조하세요.

Winrm 명령줄 도구에는 출력을 테이블 형식으로 표시하는 WsmTxt.xsl이라는 변환 파일이 함께 제공됩니다. 스크립트가 트랜폼을 수행하는 MSXML 메서드에 이 파일을 제공하는 경우 출력은 Winrm 도구의 출력과 동일하게 표시됩니다.

원시 XML 출력의 서식을 지정하려면

  1. WSMan 개체를 만들고 세션을 만듭니다.

    Set Wsman = CreateObject("Wsman.Automation")
    Set Session = Wsman.CreateSession
    
  2. XML 응답 출력 및 XSL 변환을 나타내는 MSXML 개체를 만듭니다.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Session 개체 메서드를 통해 데이터를 가져옵니다.

    xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
        "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
    
  4. 변환 파일을 저장할 MSXML loadXML 메서드 및 load 메서드에 대한 응답을 입력합니다.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. MSXML transformNode 메서드를 사용하여 출력을 표시하거나 저장합니다.

    Wscript.Echo xmlFile.TransformNode(xslFile)
    

다음 VBScript 코드 예제에서는 전체 스크립트를 보여줍니다.

Set Wsman = CreateObject("Wsman.Automation")
Set Session = Wsman.CreateSession
Set xmlFile = CreateObject( "MSXml.DOMDocument" )
Set xslFile = CreateObject( "MSXml.DOMDocument" )

xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
    "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
xmlFile.LoadXml(xmlResponse)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)

스크립트에 XML 변환에 이식 가능한 서브루틴 추가

미리 설치된 XSL 파일을 사용하여 WinRM 스크립트에서 테이블 형식으로 원시 XML 출력을 변환하는 스크립트에 서브루틴을 추가할 수 있습니다.

다음 서브루틴은 MSXML 스크립팅 메서드에 대한 호출을 사용하여 출력을 WsmTxt.xsl에 제공합니다.

'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
    Set xmlFile = CreateObject("MSXml.DOMDocument") 
    Set xslFile = CreateObject("MSXml.DOMDocument")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub

다음 서브루틴은 다음 예제와 같이 데이터의 각 줄을 변환합니다.

Const RemoteComputer = "servername.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_LogicalDisk"
Set objResultSet = objSession.Enumerate(strResource)
While Not objResultSet.AtEndOfStream
    DisplayOutput(objResultSet.ReadItem)
Wend
Sub DisplayOutput(strWinRMXml)
    Set xmlFile = CreateObject("MSXml.DOMDocument") 
    Set xslFile = CreateObject("MSXml.DOMDocument")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile) 
End Sub 

Windows 원격 관리 정보

Windows 원격 관리 사용

Windows 원격 관리 참조