Windows 원격 관리의 스크립팅

WinRM의 스크립팅 API 및 C++용 COM API는 WS-Management 프로토콜의 작업을 밀접하게 반영하도록 설계되었습니다.

Windows 원격 관리의 WinRM 스크립팅 API는 프로토콜 작업을 제외한 모든 WS-Management 프로토콜 작업을 지원합니다. 이벤트에 대한 구독을 허용하지 않습니다. BMC 시스템 이벤트 로그에서 이벤트를 구독하려면 Wecutil 또는 Wevtutil 명령줄 도구를 사용해야 합니다. 자세한 내용은 이벤트를 참조하세요.

WinRM 스크립팅 API는 VBScript(Visual Basic Scripting Edition)로 작성된 명령줄 도구인 Winrm.vbs 의해 호출됩니다. Winrm.vbs WinRM 스크립팅 API를 사용하는 방법의 예를 제공합니다.

WSman 사용 WMI 스크립팅 사용과 비교

WMI는 원격 컴퓨터에서 WMI에 연결에 설명된 구성이 필요한 DCOM 을 통해 원격 컴퓨터에 연결합니다. WinRM은 DCOM을 사용하여 원격 컴퓨터에 연결하지 않습니다. 대신 WS-Management 프로토콜은 SOAP 메시지를 보내고 서비스는 HTTP용 단일 포트와 HTTPS 전송을 위한 포트를 사용합니다.

winrm 명령줄 도구와 달리 스크립트는 WS-Management 프로토콜 메시지에 전달하는 데 필요한 XML을 제공해야 합니다. 또한 URI를 제공해야 합니다. 자세한 내용은 리소스 URIWindows 원격 관리 및 WMI를 참조하세요.

WMI 스크립팅 API는 컴퓨터의 리소스를 나타내는 Win32_LogicalDisk 인스턴스와 같은 개체에서 작동합니다. 이 WMI 클래스는 WMI 리포지토리의 이진 형식으로 저장된 MOF(Managed Object Format) 파일에 정의됩니다. WMI에서 단일 리소스에 대한 가져오기 작업 또는 여러 인스턴스에 대한 쿼리는 WMI 개체를 반환합니다.

WinRM 스크립트는 개체를 반환하지 않고 XML 텍스트 스트림을 반환합니다. 자세한 내용은 Windows 원격 관리 및 WMI를 참조하세요.

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

WinRM 스크립팅 API는 리소스를 설명하는 XML 문자열을 가져오고 받습니다. 결과 XML은 텍스트 스트림 형식이며 다른 방법으로 XML 변환을 표시해야 합니다.

다음 WinRM 스크립트는 원시 XML 출력을 생성합니다.

Set Wsman = CreateObject("Wsman.Automation")
Set xmlFile = CreateObject( "MSxml.DOMDocument")
Set Session = Wsman.CreateSession
Response = Session.Get("http://schemas.microsoft.com/wbem/wsman/" _
    & "1/wmi/root/cimv2/Win32_Service?Name=Spooler")
xmlFile.LoadXml(Response)
xmlFile.Save( "c:\RawOutput.xml")

다음 텍스트 블록은 WinRM 스크립트의 XML 출력을 보여줍니다.

<p:Win32_Service xmlns:xsi="https://www.w3.org/2001/XMLSchema-
instance" xmlns:p="http://schemas.microsoft.com/wbem/wsman/1
/wmi/root/cimv2/Win32_Service" xmlns:cim="https://schemas.dmtf
.org/wbem/wsman/1/base" cim:Class="Win32_Service"><p:AcceptP
ause>false</p:AcceptPause><p:AcceptStop>true</p:AcceptStop>
<p:Caption>Print Spooler</p:Caption><p:CheckPoint>0</p:CheckP
oint><p:CreationClassName>Win32_Service</p:CreationClassName>
<p:Description>Loads files to memory for later printing</p:De
scription><p:DesktopInteract>true</p:DesktopInteract><p:Displ
ayName>Print Spooler</p:DisplayName><p:ErrorControl>Normal</p
:ErrorControl><p:ExitCode>0</p:ExitCode><p:InstallDate xsi:ni
l="true"/><p:Name>spooler</p:Name><p:PathName>C:\Windows\Syst
em32\spoolsv.exe</p:PathName><p:ProcessId>1720</p:ProcessId><
p:ServiceSpecificExitCode>0</p:ServiceSpecificExitCode><p:Ser
viceType>Own Process</p:ServiceType><p:Started>true</p:Starte
d><p:StartMode>Auto</p:StartMode><p:StartName>LocalSystem</p:
StartName><p:State>Running</p:State><p:Status>OK</p:Status><p
:SystemCreationClassName>Win32_ComputerSystem</p:SystemCreati
onClassName><p:SystemName>wsplab6-4</p:SystemName><p:TagId>0<
/p:TagId><p:WaitHint>0</p:WaitHint><cim:Location xmlns:cim="h
ttp://schemas.dmtf.org/wbem/wsman/1/base" xmlns:a="https://sc
hemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="https://sche
mas.dmtf.org/wbem/wsman/1/wsman"><a:Address>https://schemas.xm
lsoap.org/ws/2004/08/addressing/role/anonymous</a:Address><a:
ReferenceParameters><w:ResourceURI>https://schemas.microsoft.c
om/wbem/wsman/1/wmi/root/cimv2/Win32_Service</w:ResourceURI><
w:SelectorSet><w:Selector Name="Name">spooler</w:Selector></w
:SelectorSet></a:ReferenceParameters></cim:Location></p:Win32
_Service>

스크립트는 XML 변환을 사용하여 이 출력을 더 읽기 쉽게 만들 수 있습니다. 자세한 내용은 WinRM 스크립트에서 XML 출력 표시를 참조하세요.

다음 버전의 스크립트는 XML을 사람이 읽을 수 있는 출력으로 포맷합니다.

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

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

XSL 변환은 다음 출력을 만듭니다.

Win32_Service
    AcceptPause = false
    AcceptStop = true
    Caption = Print Spooler
    CheckPoint = 0
    CreationClassName = Win32_Service
    Description = Loads files to memory for later printing
    DesktopInteract = true
    DisplayName = Print Spooler
    ErrorControl = Normal
    ExitCode = 0
    InstallDate = null
    Name = Spooler
    PathName = C:\Windows\System32\spoolsv.exe
    ProcessId = 1720
    ServiceSpecificExitCode = 0
    ServiceType = Own Process
    Started = true
    StartMode = Auto
    StartName = LocalSystem
    State = Running
    Status = OK
    SystemCreationClassName = Win32_ComputerSystem
    SystemName = wsplab6-4
    TagId = 0
    WaitHint = 0

WinRM 스크립트 및 Winrm.cmd 출력

WinRM 스크립트의 출력은 유니코드로 인코딩됩니다. FileSystemObject를 만들고 스크립트에서 파일을 작성하는 경우 결과 파일은 유니코드입니다. 그러나 출력을 파일로 리디렉션하는 경우 인코딩은 ANSI입니다. 출력을 XML 파일로 리디렉션하고 출력에 유니코드 문자가 있는 경우 XML이 유효하지 않습니다. Winrm 명령줄 도구는 ANSI를 출력합니다.

Windows 원격 관리 정보

Windows 원격 관리 사용

MSXSL

DOM 참조