WinRM, hva er det?

Hørt om WS-Management før? Web Services for Management. WinRM er Microsoft sin implementasjon av denne protokollen.

 

WS-Management

WS-Management er en protokoll som ble designet av en gruppe hardware og software produsenter som en offentlig standard for å utveksle administrasjonsdata med enhver device som implementerer protokollen.

Den gjeldende standarden er basert på følgende andre standarder: HTTPS, SOAP over HTTP, SOAP 1.2, WS-Addressing, WS-Transfer, WS-Enumeration og WS-Eventing.

Grunnen til valget av disse standardene og ikke minst hovedmotivasjonen bak WS-Management er å kunne tilby interoperabilitet for administrasjon, på tvers av ulike devicer og OS.

WS-Management baserer seg på å sende XML formaterte meldinger ved å bruke web-service standarder som WS-Addressing og WS-Transfer. Disse definerer et XML skjema for ws meldinger og definerer ulike operasjoner og verdier.

WS-Management utvider standardene med nye operasjoner også. F.eks definerer WS-Transfer operasjonene Get, Put, Create og Delete. WS-Management legger til Rename, Partial Get og Partial Put.

 

WinRM

Windows Remote Management, tilgjenglig på Windows Vista & Windows Server 2003 R2 (installer Hardware Management feature).(Klikk for større bilde) Diagram that shows the WinRM architecture

  • WinRM Scripting API for å kunne scripte tilgang og kommunikasjon over WS-Management standarden.
  • WinRM kommandolinjeverktøyet, Winrm.cmd er et verktøy skrevet med VBScript og WinRM API'et. Tillater konfigurering av WinRM, innhenting av data og administrasjon remote.
  •  WinRS.exe er et kommandolinjeverktøy som lar deg eksekvere konsollkommandoer på andre maskiner ved å benytte WS-Management protokollen.
  • WMI Service. Denne fortsetter å kjøre side-ved-side med WinRM og det er faktisk WMI som  skaffer data eller utfører operasjoner man ber om i WinRM.

 

 

 

Forskjellen fra WMI

En veldig klar forskjell er WinRM (WS-Management) baserer seg på å opprette tilkoblingen til maskina gjennom en SOAP basert protokoll, mens WMI benytter seg av DCOM.

 

Ta i bruk WinRM

En WinRM Listener må settes opp på klientmaskinene. WinRM er allerede tilgjenglig i Windows Vista, så det er kun snakk om konfigurering og aktivering. https://msdn2.microsoft.com/en-us/library/aa384372.aspx

 

For å ta det i bruk fort, sjekk ut kommandoen WinRM. Kun for testing kan du benytte winrm quickconfig for å aktivere en listener på klienten.

WinRM blir også i større og større grad mulig å ta i bruk i nyere administrasjonsverktøy fra Microsoft, som f.eks System Center porteføljen.

 

Enkelt Powershell eksempel

 

$w = new-object -comobject "Wsman.Automation"
$s = $w.CreateSession()
$service = read-host "Angi Service"
$sres = "https://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=" + $service

$in = $s.Get($sres)
$in

$xmlfile = new-object -comObject "MSXml.DOMDocument"
$xslfile = new-object -comObject "MSXml.DOMDocument"
$xmlfile.LoadXml($in)
$xslfile.Load("WsmTxt.xsl")
$xmlfile.TransformNode($xslfile)

$xmlfile.save("c:\temp\winrm.xml")
$xmfile.text.save("c:\temp\winrm.txt")

$ie = new-object -comObject "Internetexplorer.Application"
$ie.StatusBar = $false
$ie.toolbar = 0
$ie.navigate("c:\temp\winrm.xml")
$ie.visible = $true

 

 

$maskin = read-host "maskin navn"

[xml]$osInfo = winrm get wmicimv2/Win32_OperatingSystem /format:pretty

"OS versjon:" + $osInfo.Win32_OperatingSystem.Version

"Sist starta: " + $osInfo.Win32_OperatingSystem.LastBootupTime.DateTime

 

 WinRM kommando eksempler:

 

  • Kjappt sette opp WS-Man service: winrm QuickConfig
  • fjerne like fort: winrm invoke Restore winrm/Config @{}
  • Vise OS info: winrm get wmicimv2/Win32_OperatingSystem
  • Sjekke CPU load: winrm g wmicimv2/Win32_Processor?DeviceID=CPU0 -fragment:LoadPercentage -r:<some computer>
  • Stoppe en service: winrm invoke stopservice wmicimv2/Win32_Service?name=w32time -r:<some computer> (gjett selv hvordan du starter igjen)