WinRM 스크립트에서 XML 출력 표시
Windows 원격 관리 스크립트는 개체가 아닌 XML을 반환합니다. XML은 사람이 읽을 수 있는 형식이 아닙니다. MSXML API 및 미리 설치된 XSL 파일의 메서드를 사용하여 데이터를 사람이 읽을 수 있는 형식으로 변환할 수 있습니다.
WinRM XML 출력 및 원시 및 형식이 지정된 XML의 예제에 대한 자세한 내용은 Windows 원격 관리의 스크립팅을 참조하세요.
Winrm 명령줄 도구에는 출력을 테이블 형식으로 표시하는 WsmTxt.xsl이라는 변환 파일이 함께 제공됩니다. 스크립트가 트랜폼을 수행하는 MSXML 메서드에 이 파일을 제공하는 경우 출력은 Winrm 도구의 출력과 동일하게 표시됩니다.
원시 XML 출력의 서식을 지정하려면
WSMan 개체를 만들고 세션을 만듭니다.
Set Wsman = CreateObject("Wsman.Automation") Set Session = Wsman.CreateSession
XML 응답 출력 및 XSL 변환을 나타내는 MSXML 개체를 만듭니다.
Set xmlFile = CreateObject( "MSXml.DOMDocument" ) Set xslFile = CreateObject( "MSXml.DOMDocument" )
Session 개체 메서드를 통해 데이터를 가져옵니다.
xmlResponse = Session.Get("http://schemas.microsoft.com/" & _ "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
변환 파일을 저장할 MSXML loadXML 메서드 및 load 메서드에 대한 응답을 입력합니다.
xmlFile.LoadXml(xmlResponse) xslFile.Load("WsmTxt.xsl")
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
관련 항목