WinRM - daljinski rad sa PowerShell-om. WinRM - daljinski rad sa PowerShell-om Podešavanje poverenja između računara

17.10.2011. Don Jones

Shvatio sam da su kreatori PowerShell-a bili malo lijeni, i to je dobra stvar. Nisu hteli da kodiraju parametar -ComputerName za svaku komandu, pa su kreirali opšti sistem nazvan "remoting". U suštini, ovaj sistem omogućava pokretanje bilo koje komande na udaljenom računaru. Možete čak pokrenuti različite komande koje postoje na udaljenom računaru, ali ne postoje na vašem. To znači da ne morate stalno instalirati svaku naredbu na vašoj radnoj stanici. Ovaj udaljeni sistem je veoma efikasan i pruža niz zanimljivih administrativnih karakteristika

Kada sam počeo da koristim PowerShell, zainteresovao sam se za komandu Get-Service i primetio sam da ima parametar -ComputerName. Ne znači li to da se na uslugu možete povezati sa drugih računara? Nakon brojnih eksperimenata, otkrio sam da je to upravo ono što piše. Zainteresovao sam se i počeo da tražim parametre -ComputerName iz drugih komandi. I bio sam uznemiren kada sam saznao da ih je samo nekoliko.

PowerShell pruža dvije vrste udaljenog rada: udaljeno udaljeno udaljeno jedan-na-jedan (1:1) i udaljeno udaljeno jedan-prema-više (1:n). Prije nego što pričam o njima, želim objasniti neke osnove.

Osnove udaljenog rada u PowerShell-u

PowerShell daljinsko upravljanje radi slično kao Telnet i druge starije tehnologije daljinskog upravljanja. Kada pokrenete komandu, ona se zapravo pokreće na udaljenom računaru. Sve što se vrati na vaš računar rezultat je ove komande. Za razliku od Telneta ili Secure Shell-a (SSH), PowerShell koristi novi protokol komunikacionog sistema nazvan Web Services for Management (WS-Management). Protokol radi na vrhu HTTP ili HTTP Secure (HTTPS), što olakšava rutiranje kroz firewall ako je potrebno, budući da protokol koristi samo jedan port za uspostavljanje komunikacije. Microsoftova implementacija WS-Management-a dolazi u obliku pozadinske usluge pod nazivom Windows Remote Management. WinRM je instaliran sa PowerShell 2.0 i radi po defaultu na serverima kao što je Windows Server 2008 R2. Na Windows 7 je instaliran po defaultu, ali nije aktiviran. Morate aktivirati WinRM na računarima na koje želite da pošaljete naredbu. Računar iza kojeg se fizički nalazite ne treba da pokreće WinRM uslugu.

Sve PowerShell komande proizvode objekte kao izlaz. Kada daljinski pokrenete komandu, njen izlaz mora biti u obliku koji se može lako prenijeti preko mreže koristeći HTTP ili HTTPS. Na primjer, PowerShell automatski pretvara izlazne objekte u XML datoteke koje se šalju preko mreže. Kada stignu do vašeg računara, ponovo se konvertuju u objekte sa kojima PowerShell može da radi. Međutim, ovi nazad konvertovani objekti su zapravo snimci. Ne mogu se ažurirati svake minute. Dakle, ako morate doći do objekata koji predstavljaju procese koji se pokreću na udaljenom računaru, onda će dobijeni rezultat vrijediti samo za određeni vremenski period tokom kojeg su ovi objekti generirani. Vrijednosti kao što su memorija i korištenje CPU-a se neće promijeniti. Štaviše, nećete moći natjerati objekte koji su konvertirani nazad da urade bilo šta. Na primjer, ne možete narediti objektu da se zaustavi. Ovo je glavno ograničenje daljinske suradnje, ali vas neće spriječiti da radite i radite zanimljive stvari.

Postoji samo nekoliko osnovnih zahtjeva za korištenje sistema za daljinsko upravljanje.

  • Kako bi vaš računar (tzv. lokalni računar) i onaj na koji želite da pošaljete komandu (aka udaljeni računar) trebalo da rade sa Windows PowerShell 2.0? Windows XP je zastarjela verzija Windowsa na koju možete instalirati PowerShell 2.0. Dakle, stara verzija također može sudjelovati u udaljenoj sesiji.
  • U idealnom slučaju, lokalni i udaljeni računari bi trebali biti članovi iste domene ili članovi pouzdanih/pouzdanih domena. Možete raditi sa udaljenim sistemom van domena, ali to je teško i neću o tome ovdje. Da biste saznali više o ovom scenariju, pogledajte temu PowerShell pomoći o Remote_Troubleshooting.

WinRM Review

Sada pređimo na WinRM, jer morate konfigurirati postavke za ovu uslugu da biste započeli daljinsko upravljanje. Opet, trebate samo podesiti WinRM i PowerShell postavke udaljenog rada na udaljenom računaru. U većini okruženja u kojima sam radio, administratori su omogućili daljinsko upravljanje na svakom računaru koji koristi verziju XP-a ili noviju. Ovo omogućava prodor na desktop i laptop računare a da to ne bude primećeno, što može biti veoma korisno (što znači da korisnici takvih računara neće znati šta radite).

To ne znači da je WinRM nešto posebno za PowerShell. WinRM može usmjeriti promet na više administrativnih aplikacija. U suštini, WinRM djeluje kao dispečer. Kada saobraćaj stigne, WinRM odlučuje koja aplikacija treba da komunicira sa njim i označava je imenom odredišne ​​aplikacije. Prijemna aplikacija mora se registrirati kod WinRM-a tako da WinRM može slušati dolazni promet u svoje ime. Drugim riječima, ne samo da trebate omogućiti WinRM, već i registrirati Power Shell kao krajnju tačku za WinRM.

Najlakši način da izvršite oba zadatka je da pokrenete PowerShell kao administrator i pokrenete naredbu Enable-PSRemoting. U priručniku možete pogledati drugu naredbu pod nazivom Set-WSManQuickConfig. Nema potrebe za pokretanjem naredbe. Enable-PSRemoting to čini umjesto vas, a također izvodi nekoliko drugih koraka koji su neophodni za uspostavljanje daljinske komunikacije i rada. U suštini, komanda Enable-PSRemoting pokreće WinRM uslugu, konfiguriše je da se pokreće automatski, registruje PowerShell kao krajnju tačku i čak postavlja izuzetke u Windows zaštitnom zidu kako bi se omogućio dolazni WinRM saobraćaj.

Ako ne želite da prođete kroz svaki računar da biste omogućili udaljeno, možete koristiti objekt grupne politike (GPO). Potrebne GPO postavke ugrađene su u Windows Server 2008 R2 kontrolere domena. Samo otvorite GPO i idite na rutu Computer Configuration\

Administrativni predlošci\Windows komponente. Na dnu liste ćete pronaći postavke za udaljenu ljusku i Windows udaljeno upravljanje (WRM) za koje morate da konfigurišete. Odjeljak Pomoć o problemima sa sistemom daljinske komunikacije (Remote_Troubleshooting) će vam dati detaljna uputstva kako to učiniti. Pregledajte odjeljke Kako omogućiti daljinsko upravljanje u preduzeću i Kako omogućiti slušaoce korištenjem smjernica grupe u pomoći.

WinRM 2.0 (koji PowerShell koristi) podrazumevano koristi TCP port 5985 za HTTP i port 5986 za HTTPS. Ovo osigurava da WinRM nije u sukobu s lokalno instaliranim web serverima koji su konfigurirani da slušaju portove 80 i 443. Možete konfigurirati WinRM da koristi alternativne portove, ali ja to ne preporučujem. Ako napustite ove portove, sve komande za daljinski pristup PowerShell-u će raditi dobro. Ako promijenite ove portove, uvijek ćete morati navesti alternativni port prilikom pokretanja naredbe za daljinski pristup. To znači da ćete morati kucati više. Ako apsolutno trebate promijeniti port, možete unijeti naredbu:

Winrm set winrm/config/slušatelj? Adresa=* +Transport=HTTP @(Port="1234")

Brojevi 1234 označavaju port koji vam je potreban. Ovdje je ova naredba napisana u više redova, ali morate je unijeti u jedan red. Isto vrijedi i za sve ostale naredbe opisane u članku. Ako trebate koristiti HTTPS umjesto http, možete modificirati ovu naredbu da konfigurirate novi HTTPS port. Moram priznati da postoji način da se konfigurišu WinRM postavke na lokalnim računarima kako bi se po defaultu koristili alternativni portovi. Na ovaj način, ne morate stalno definirati alternativni port kada pokrenete naredbu za daljinski pristup. Ali hajde da radimo sa podrazumevanim postavkama koje je dao Microsoft.

Ako zadubite u GPO postavke u Remote Shell-u, primijetit ćete da možete postaviti, na primjer, koliko dugo će udaljena sesija ostati neaktivna prije nego što je server prekine; koliko istovremenih korisnika može pristupiti udaljenom serveru odjednom; koliko memorije i procesa svaka udaljena ljuska može koristiti; Maksimalan broj udaljenih ljuski koje korisnici mogu otvoriti u jednom trenutku. Ove postavke će vam pomoći da osigurate da vaši serveri ne budu preopterećeni zaboravnim administratorima. Međutim, prema zadanim postavkama morate biti administrator da biste koristili daljinsko upravljanje, tako da ne morate brinuti da će obični korisnici začepiti vaše servere.

Interakcija na daljinu 1:1

Sa 1:1 daljinskim upravljanjem, u suštini imate pristup komandnoj liniji na jednom udaljenom računaru. Sve komande koje date pokreću se direktno na udaljenom računaru i videćete rezultate u prozoru komandne linije. To je donekle slično korišćenju veze sa udaljenom radnom površinom, osim što ste ograničeni na okruženje komandne linije PowerShell. PowerShell daljinsko upravljanje koristi delić resursa koje zahteva udaljena radna površina, tako da ima mnogo manji uticaj na vaše servere.

Da biste uspostavili vezu 1:1 sa udaljenim računarom koji se zove Server-R2, potrebno je da pokrenete

Enter-PSSession -Computername Server-R2

Pod pretpostavkom da ste omogućili daljinsko upravljanje na udaljenom uređaju, računar je u istoj domeni i vaša mreža radi normalno, dobićete potrebnu vezu. PowerShell vam daje do znanja da ste postigli svoj cilj promjenom komandne linije u

PS C:\>

Dio vas obavještava da se sve što radite dešava na Server-R2. Nakon toga možete pokrenuti bilo koje komande koje želite. Možete čak uvesti bilo koje module i dodati PowerShell ekstenzije (PSSnapins) koje će se nalaziti na udaljenom računaru.

Čak će i dozvole ostati iste. Vaša kopija PowerShell-a će raditi s istim sigurnosnim tokenom s kojim je pokrenuta. PowerShell to radi koristeći Kerberos, tako da ne prenosi korisničko ime i lozinku preko mreže. Svaka komanda koju pokrenete na udaljenom računaru će se pokrenuti pod vašim akreditivima, tako da možete učiniti sve što imate dozvolu. Ovo je slično logovanju direktno sa konzole računara i korišćenju kopije PowerShell-a tog računara. Gotovo je tako. Evo nekoliko razlika.

  • Ako imate PowerShell skriptu za svoj profil na udaljenom računaru, ona se neće pokrenuti kada se povežete pomoću sistema za daljinski pristup. Jednostavno rečeno, profili su paket komandi koje se pokreću automatski svaki put kada otvorite prozor komandne linije. Koriste se za automatsko preuzimanje ekstenzija, modula i slično.
  • Ograničeni ste Politikom izvršavanja udaljenog računara. Recimo da je vaša kompjuterska politika postavljena na RemoteSigned tako da možete pokrenuti lokalne nepotpisane skripte. Ako je politika udaljenog računara postavljena na Ograničeno (podrazumevana postavka), neće dozvoliti pokretanje bilo koje skripte kada komunicirate na daljinu.

Mnoge PowerShell komande dolaze u parovima: jedna radi nešto, druga radi suprotno od toga. U našem slučaju, Enter-PSSession vas povezuje sa udaljenim računarom, a Exit-PSSession zatvara tu vezu. Exit-PSSession ne zahtijeva nikakve parametre. Jednom kada se pokrene, udaljena veza se zatvara i prompt prozora komandne linije vraća se u normalu. Šta ako zaboravite pokrenuti Exit-PSSession? Ne brini. PowerShell i WinRM mogu shvatiti što ste učinili i zatvoriti udaljenu vezu ako je potrebno.

Želim da dam jedan savet. Kada se povežete na udaljeni računar, nemojte pokretati Enter-PSSession na njemu dok niste potpuno svjesni šta radite. Na primjer, radite u ComputerA. Povezujete se na Server-R2. U PowerShell liniji koju pokrećete

PS C:\>Enter-PSSession Server-DC4

Server-R2 sada sadrži otvorenu vezu sa Server-DC4. Ovo stvara „lanac udaljenog rada“ kojem je teško ući u trag. Osim toga, vaši serveri postaju nepotrebno preopterećeni. Možda ćete morati da uradite ovo (na primer, Server-DC4 je iza zaštitnog zida i ne možete mu direktno pristupiti, tako da morate da koristite Server-R2 kao posrednika). Međutim, opće pravilo je sljedeće: pokušajte izbjeći lance za udaljenje.

1:n daljinsko upravljanje

Jedna od najboljih stvari u vezi PowerShell-a je 1:n daljinsko upravljanje. Omogućava vam slanje komandi na više udaljenih računara u isto vrijeme - potpuno distribuirano računarstvo. Svaki računar će pojedinačno izvršiti naredbu i poslati vam rezultate. Sve se radi pomoću naredbe Invoke-Command u ovom obliku:

Invoke-Command -ComputerName Server-R2, Server-DC4, Server12 -Command (Get-EventLog Security -Najnoviji 200 | Gdje ($_.EventID -eq 1212))

Komanda u vanjskim vitičastim zagradama se šalje na sva tri udaljena računara. PowerShell podrazumevano može razgovarati sa do 32 računara odjednom. Ako navedete više od 32 računara, oni će biti stavljeni u red čekanja. Zatim, kada se jedan računar isključi, sledeći izvršava naredbu. Ako imate zaista brzu mrežu i moćne računare, možete povećati njihov broj pomoću komandnog parametra ThrottleLimit. O tome kako koristiti ovaj parametar možete pročitati u Invoke-Command na stranici pomoći.

Jedini parametar koji nećete vidjeti na stranici pomoći ove naredbe je parametar naredbe. Kao što sam već pokazao, radi odlično. Parametar Command je pseudonim ili kratko ime za parametar ScriptBlock, koji je naveden na stranici pomoći. Lakše mi je koristiti naredbu, pa sam je sklon da koristim umjesto ScriptBlock-a, ali one rade isto.

Ako pažljivo pročitate stranicu pomoći za Invoke-Command, također ste primijetili opciju koja vam omogućava da navedete datoteku skripte umjesto komande. Parametar FilePath vam omogućava da pošaljete skriptu udaljenim računarima; to znači da možete automatizirati neke složene zadatke i da svaki računar obavi svoj dio posla.

Sada se fokusirajmo na parametar Computer Name. U primjeru koda Invoke-Command, imao sam listu imena računara odvojenu zarezima. Ako imate mnogo računara, možda nećete htjeti upisivati ​​njihova imena svaki put kada se povežete s njima. Umjesto toga, možete kreirati tekstualnu datoteku koja sadrži jedno ime računala u jednom redu, bez zareza, navodnika ili bilo čega drugog. Na primjer, ako je vaš tekstualni fajl nazvan webservers.txt, koristili biste kod ovako:

Invoke-Command -Command ( dir ) - ComputerName (Get-Content webservers.txt)

Zagrade prisiljavaju PowerShell da prvo pokrene naredbu Get-Content - ovo je slično načinu na koji zagrade rade u matematici. Rezultati Get-Content su zatim ugniježđeni unutar parametra -ComputerName.

Takođe je moguće upitati ime računara u Active Directory-u, ali ovo je komplikovanije. Da biste pronašli računar, možete koristiti komandu Get-ADComputer, ali nećete staviti komandu u zagrade kao što ste učinili sa Get-Content. Zašto ne? Get-Content proizvodi jednostavne tekstualne nizove, dok Get-ADComputer proizvodi objekte tipa "kompjuter". Parametar -ComputerName očekuje string. Kada bi morao da primi kompjuterske predmete, ne bi znao šta da radi sa njima. Stoga, ako želite da koristite Get-ADComputer, potrebno je da dobijete vrednosti iz svojstva Name računarskih objekata. Volim ovo:

Invoke-Command -Command (dir) -ComputerName (Get-ADComputer -Filter * -SearchBase "ou=Sales, dc=company, dc=pri" | Select-Object -Expand Name)

U zagradama, računarski objekti se prosleđuju komandi Select-Object, a parametar -Expand se koristi za pronalaženje svojstva Name ovih računarskih objekata. Rezultat izraza u zagradama je skup imena računara, a ne računarskih objekata. Imena računara su upravo ono što je potrebno parametru -Computer Name.

Ako niste upoznati sa Get-ADComputer, hajde da pogledamo šta ova komanda radi. Parametar -Filter specificira da svi računari treba da budu uključeni u rezultate, a parametar -Search Base nalaže PowerShell-u da počne da traži računare u grupi organizacije prodaje (OU) u domeni company.pri. Komanda Get-ADComputer dostupna je samo u Windows Serveru 2008 R2 iu Windowsu 7 nakon instaliranja alata za administraciju udaljenog servera. Na ovim operativnim sistemima koje koristite

Uvozni modul ActiveDirectory

za učitavanje naredbi servisa direktorija u komandnu ljusku kako bi se mogle koristiti.

Ima još nešto!

Svi ovi primjeri dati su za peer-to-peer udaljene sesije. Ako ćete se ponovo povezati na iste računare (ili računar) nekoliko puta u kratkom vremenskom periodu, možete kreirati trajne sesije za višekratnu upotrebu. Ovo je vrlo korisno ako veza zahtijeva alternativne vjerodajnice, broj porta koji nije zadani ili bilo šta drugo što zahtijeva dodatne parametre.

Da biste kreirali trajne sesije, trebate koristiti naredbu New-PSSession, a zatim ih pohraniti u varijablu radi lakšeg pristupa. Na primjer, sljedeći kod kreira udaljenu sesiju sa tri računara i pohranjuje ih u varijablu $sessions:

$sessions = Novo-PSSession -Ime računara jedan, dva, tri -Port 5555 -Akreditiv DOMAIN\Administrator

Udaljene sesije se automatski zatvaraju kada zatvorite komandnu ljusku, ali do tada mogu zauzeti memoriju i određeno korištenje CPU-a na lokalnom i udaljenom sistemu. Da biste ih tačno zatvorili, možete koristiti naredbu Remove-PSSession:

$sessions | Remove-PSSession

Kada trebate ponovo otvoriti sesije, možete koristiti Invoke-Command:

Invoke-Command -Command (dir) -Session $sessions

Ili možete koristiti Enter-PSSession:

Enter-PSSession -Sesija $session

Imajte na umu da se u kodu Enter-PSSession samo jedna udaljena sesija ponovo otvara. Varijabla indeksa 1 govori PowerShell-u da ponovo otvori sesiju sa računarom pod nazivom Two (indeks je zasnovan na nuli).

Kao što vidimo, PowerShell daljinsko upravljanje ima mnogo prednosti. Ako ga koristite, vidjet ćete koliko će vam proširiti vidike.

Don Jones ( [email protected]) je PowerShell tehnički instruktor (www.windowsitpro.com/go/DonJonesPowerShell), autor više od 35 knjiga. Ima titulu Microsoft MVP



Daljinsko upravljanje Windowsom pomoću WinRM

Zapravo WinRM(ili Windows daljinsko upravljanje) i prevodi se kao „daljinski upravljač Windows". WinRM– usluga daljinskog upravljanja operativnim sistemima Windows. Od tada je uključen u operativne sisteme Vista I Server 2008, Za Windows XP I Server 2003 potrebno ga je instalirati odvojeno odavde. WinRM– serverski dio aplikacije za daljinsko upravljanje, na koji je moguće daljinski povezati se putem klijenta Windows Remote Shell (WinRS).

WinRM baziran na servisu Web usluge za upravljanje (WS-Management) i koristi HTTP (port 80) ili HTTPS (443) i SOAP zahtjeve da obavi posao. Bez obzira na korišteni protokol, sav promet se šalje WinRM je šifriran (osim ako izričito onemogućite ovu opciju). Zadani protokol autentifikacije je Kerberos.

IN Windows Server 2008 WinRM instaliran, ali (iz sigurnosnih razloga) nije omogućen prema zadanim postavkama. Da provjeri da li radi WinRM na našoj mašini, ukucajte komandnu liniju winrm enumerate winrm/config/listener

Ako nema odgovora, onda WinRM ne trči. U cilju postavljanja WinRM da biste se automatski pokrenuli i omogućili daljinsko povezivanje sa računarom, unesite komandu winrm quickconfig ili winrm qc

Da biste spriječili WinRM da traži potvrdu, možete dodati ključ pozivu -tiho. Možete saznati informacije o finom podešavanju ugrađene pomoći. WinRM: winrm help config

Pa, isključi ga WinRM možete koristiti ovu naredbu:
winrm izbrisati winrm/config/listener?IPAdress=*+Transport=HTTP

Također, sva potrebna podešavanja mogu se izvršiti korištenjem grupnih politika. Da biste to uradili potrebno vam je:

  • Postavite uslugu WinRM na automatski start
  • Dozvolite veze na odgovarajuće portove (80 i 443) u zaštitnom zidu Windows
  • Konfigurirajte stavku grupne politike Konfiguracija računara\Administrativni predlošci\Windows komponente\Windows Remote Management\Windows Remote Management\Dozvoli automatsku instalaciju slušalaca (Konfiguracija računara\Administrativni predlošci\Windows komponente\Windows Remote Management\WinRM Service\Dozvoli automatsku konfiguraciju slušalaca). Ovdje ćete morati navesti IP adrese s kojih su veze dozvoljene.

Sada idemo na upotrebu. Za povezivanje sa udaljenim računarom koristimo uslužni program WinRS. WinRS– skraćenica za Windows Remote Shell(udaljeno okruženje Windows). WITH WinRS možemo da šaljemo udaljene zahteve računarima koji rade WinRM. Međutim, imajte na umu da i vaša mašina treba da radi WinRM raditi sa WinRS.

Glavni način upotrebe WinRS je izvršavanje komandi na udaljenoj mašini. Ime računara je navedeno ključem -r nakon čega slijedi naredba koju treba izvršiti, na primjer pobjednicir: SRV2 ipconfig / sve radi na udaljenom računaru SRV2 tim ipconfig/sve

Zadani protokol za komunikaciju je http, ali možete i koristiti https: winrs -r:https://SRV2 ipconfig /all

Također možete koristiti WinRS otvorite interaktivnu sesiju na udaljenom računaru: winrs -r:SRV2 cmd.exe

Ova funkcija je slična povezivanju putem telnet, ali koristite WinRS Definitivno bolje sa sigurnosne tačke gledišta.

Da biste koristili WinRM, svi računari moraju biti članovi iste domene. Ako to nije slučaj u vašem slučaju, onda možete pokušati sniziti nivo sigurnosti. Da biste to učinili, na računaru kojem želimo pristupiti unesite sljedeće naredbe:

« istinito")

« »}

WinRM je postavio winrm/config/client @(TrustedHosts= « Ime računara" }

gdje je ComputerName udaljeni računar s kojeg će se uspostaviti veza.

Na računar sa kojeg ćemo se povezati unesite:

WinRM je postavio winrm/config/service/auth @(Basic= « istinito")

WinRM je postavio winrm/config/client @(TrustedHosts= « »}

WinRM je postavio winrm/config/client @(TrustedHosts="ime računara" }

gdje je ComputerName kompjuter kojim ćemo upravljati.

Zatim uspostavljamo vezu koristeći naredbu:

pobjednici -r:"ime računara" : –u: Domena\Korisničko ime –p: Lozinka cmd.exe

gdje je domena\korisničko ime korisnički nalog sa administrativnim pravima na udaljenom računaru.

WinRM i WinRS su novi u Windows Vista, Windows Server 2003 R2, Windows Server 2008 (i Server 2008 Core). Ovo su moćni novi alati komandne linije koji administratorima sistema nude poboljšanu daljinsku kontrolu i mogućnosti daljinskog izvršavanja na Windows mašinama. Međutim, prvo ih treba omogućiti i trebat će neko vrijeme da nauče njihovu funkcionalnost. Imate sreće, ovaj članak sadrži sve što vam je potrebno da počnete koristiti ove alate već danas!

Šta je Windows daljinsko upravljanje (WinRM)?

Windows Remote Management (skraćeno WinRM) je nova zgodna usluga daljinskog upravljanja za Windows Server 2003 R2, Windows Vista i Windows Server 2008. WinRM je "serverska" komponenta ove aplikacije za daljinsko upravljanje, a WinRS (Windows Remote Shell) je " klijent" za WinRM koji radi na udaljenom računaru u pokušaju da daljinski kontroliše WinRM server. Međutim, moram napomenuti da OBA računara moraju imati instaliran i omogućen WinRM da bi WinRS radio i primao informacije o udaljenom sistemu. WinRM je zasnovan na standardima Web Services for Management (WS-Management). To znači da WinRM koristi HTTP (port 80) i SOAP zahtjeve za obavljanje posla. Dobra stvar u vezi ovoga je što se HTTP zahtjevi mogu lako poslati kroz zaštitni zid. Iz ovoga proizilaze dobre i loše posljedice: s jedne strane će biti lakše kontrolisati udaljeni računar putem interneta, ali će, s druge strane, napadaču lakše napasti isti računar iz daljine. Još jedna mala prednost korištenja porta 80 je da nema potrebe za otvaranjem drugih portova na serveru ako su dolazne HTTP veze već dozvoljene.

Prema Microsoftu, WinRM je "Microsoftov novi alat za uspostavljanje API-ja zasnovanog na standardima za upravljanje sistemom." Dakle, ako ranije niste bili zainteresovani za učenje o takvim alatima, mislim da činjenica da je „to je novi Microsoftov standard“ čini to vrijednim učenja.

Možda ste već upoznati sa bazom podataka Windows Management Instrumentation (WMI). Ali, za svaki slučaj, reći ću da ova baza podataka sadrži sve vrste informacija o kompjuterskom hardveru i softveru. Skoro svaka aplikacija koja upravlja Windows sistemom spušta se na nivo WMI baze podataka kako bi izvršila sve administrativne zadatke na datom računaru.

WinRM će koristiti WMI bazu podataka za obavljanje zadataka sličnih onima koje ste možda obavili s drugim softverom kao što je VBScript. Prednost WinRM-a je što koristi HTTP (port 80), kao što sam rekao, a postoji čak i poseban kod koji omogućava WinRM-u da podijeli dolazne veze na portu 80 sa IIS komponentom koja možda već radi na tom portu.

WinRM podržava različite vrste provjere autentičnosti kako bi spriječio bilo koga da obavlja administrativne zadatke na vašim klijentima i serverima. Naravno, morate imati na umu da omogućavanjem WinRM-a otvarate još jedan put za napad na vaš sistem. Međutim, kao što ja radim za svaki otvoreni port, ako su autentikacija i šifriranje pravilno postavljeni, može se smatrati da ste poduzeli sve razumne mjere opreza.

Proizvođač vašeg softvera za upravljanje sistemom možda je već planirao da koristi WinRM u budućim izdanjima svog softvera, tako da možda već koristite WinRM kroz druge aplikacije. Međutim, možete sami koristiti ovu komponentu koristeći naredbu winrm.cmd. Pomoću ovog CLI alata možete vrlo lako izdvojiti informacije iz WMI baze podataka za bilo koji zadatak koji riješite.

Kao što ćete vidjeti u nastavku, WinRM ima interfejs komandne linije sa mnogo opcija. Informacije o pomoći o WinRM-u će vam biti prikazane čak i ako nije omogućen na vašem sistemu.

Slika 1: WinRM opcije komandne linije

Kako omogućiti i koristiti WinRM?

Ako koristite Windows 2008 Server, WinRM je već instaliran, ali nije omogućen po defaultu. Ovo je dobra mjera opreza. Najlakši način da provjerite da li je WinRM omogućen i radi na vašem računaru je da odete do komandne linije i upišete:

winrm enumerate winrm/config/listener

Ako ne dobijete odgovor, WinRM ne radi. Da konfigurišete WinRM da se automatski pokreće i dozvoli daljinski pristup, koristite naredbu winrm quickconfig, Na primjer:

C:\Korisnici\Administrator> winrm quickconfig WinRM nije podešen da dozvoli daljinski pristup ovoj mašini radi upravljanja.Potrebno je izvršiti sljedeće promjene:Kreirajte WinRM slušalicu na HTTP://* da prihvatite WS-Man zahtjeve za bilo koju IP adresu na ovoj mašini.Izvršiti ove promjene? y WinRM je ažuriran za daljinsko upravljanje.Kreiran je WinRM slušalac na HTTP://* za prihvatanje WS-Man zahtjeva za bilo koju IP adresu na ovoj mašini.C:\Korisnici\Administrator> Nakon postavljanja quickconfig-a, ponovo sam pokrenuo naredbu za nabrajanje sa sljedećim rezultatima: C:\Korisnici\Administrator> winrm e winrm/config/listener SlušalacAdresa = *Transport = HTTPPort = 80Ime hostaOmogućeno = istinaURLPrefiks = wsmanCertificateThumbprintListeningOn = 10.253.15.98, 127.0.0.1, ::1, fe80::5efe:10.253.15.98%11, fe80::9583:2148:e1ef:6444%10C:\Korisnici\Administrator>

Sada znam da je WinRM omogućen.

Usput, ako želite da onemogućite WinRM, trebate koristiti ovu naredbu:

winrm izbrisati winrm/config/listener?IPAdress=*+Transport=HTTP

Da biste koristili WinRM, svi čvorovi koji komuniciraju s njim moraju biti članovi istog domena kao i čvor koji pokreće WinRM. Ako to nije slučaj u vašem slučaju, preporučujem da se upoznate s različitim sigurnosnim scenarijima u članku „Daljinsko upravljanje jezgrom servera pomoću WinRM-a i WinRS-a”.

Šta je WinRS i kako ga koristiti?

WinRS je akronim za Windows Remote Shell. Sa WinRS-om možete postavljati udaljene upite prema Windows mašinama koje koriste WinRM. Međutim, nemojte zaboraviti da također morate pokrenuti WinRM na svom stroju da biste radili sa WinRS.

Kao što možete vidjeti na dijagramu ispod, pobjednici je potpuno opremljen alat za komandnu liniju sa ogromnom količinom referentnih informacija o tome kako ga koristiti.

Slika 2: Opcije WinRS komandne linije

Jedan od najčešćih načina korištenja WinRS-a je izvršavanje naredbi na udaljenoj mašini. Naravno, ova komunikacija se odvija pomoću HTTP protokola (port 80) (podrazumevano).

Ispod je primjer korištenja WinRS-a: Pokrenuo sam komande na lokalnom hostu. Izveo sam dvije naredbe: ‘’ ver' i ' dir C:‘. U svakom slučaju, u odgovoru su dobijene adekvatne informacije.

Slika 3: Demonstracija WinRS komande

Rezultati

WinRM i WinRS su veoma moćni novi alati o kojima bi administratori sistema Windows trebali naučiti. Razmislite o mogućnostima daljinskog upravljanja sa WinRM/WinRS! Možete instalirati programe, mijenjati postavke, rješavati probleme (naravno, ako problem nije u mrežnoj komunikaciji). Možete ići dalje i povezati WinRS sa skriptom za obavljanje ovih zadataka na više računara. Također, zapamtite da će ih, bez obzira na to da li koristite ove alate ili ne, vaš softver za upravljanje sistemom uskoro koristiti na ovaj ili onaj način.

Za sve OS, čak i XP.

Za mene, osim samog PowerShell-a 2.0, glavna stvar je WinRM. Kada se primeni na PowerShell, to je jednostavno način za pokretanje komandi na udaljenom računaru.

Evo kako to učiniti:
0. Instalirajte Windows Management Framework Core

1. Da konfigurišete winrm na mašini koja će biti server:
1.1 idite na cmd.exe (pokušao sam to učiniti ispod ISE-a, ali ne radi s programima interaktivne konzole)
1.2 pokrenuti winrm qc
1.3 odgovor Y na pitanje o promjenama

2. Sada možete kliknuti na ikonu terminala u PowerShell ISE na klijentskoj mašini, otkucati ime servera i nalog, zatim uneti lozinku i raditi sa uobičajenim ISE na udaljenom računaru.

A korištenjem skupa naredbi *-PSSession, takav scenarij je moguć. Ulogujte se na udaljenu mašinu, izvršite dugotrajnu operaciju tamo, vratite se i sve je gotovo.

P.S. proslijedio poruku od anonimnog:

"Zdravo! Pomoć je potrebna jer... Ni sama nisam našla rješenje ;)). Općenito, problem je sljedeći - ne znam kako da kontaktiram autora jedne od tema.. Ovaj članak me potaknuo da se upoznam s mrežnim mogućnostima Powershell-a. Prilikom postavljanja ove funkcije na PC sa Windows XP SP3, pojavio se problem - pojavila se sljedeća greška:

PS C:\Documents and Settings\Administrator> winrm qc
WinRM nije podešen da prima zahtjeve na ovoj mašini.
Potrebno je izvršiti sljedeće promjene:

Pokrenite WinRM uslugu.

Izvršiti ove promjene? y

WinRM je ažuriran za primanje zahtjeva.

WinRM servis je pokrenut.
WSManFault
Poruka = ​​Pristup je odbijen.

Broj greške: -2147024891 0x80070005
Pristup odbijen.
PS C:\Documents and Settings\Administrator>
**********************************************************************
Dugo, dugo sam tražio načine da riješim ovaj problem na internetu, ali još uvijek nisam mogao pronaći ništa vrijedno truda. Sve u svemu,
Da biste riješili ovaj problem, idite na Start->Administracija ->Lokalne sigurnosne postavke (secpol.msc) ->Sigurnosna opcija ->Potražite “Pristup mreži: model dijeljenja i sigurnosti za lokalne račune” (mrežni pristup: dijeljenje i sigurnosni model za lokalni nalozi) -> promijenite politiku u “Normalno -...” (Klasično -...) -> Ponovo pokrenite i to je to - problem je gotov!

Velika molba, pošaljite ovu poruku autoru ove teme, jer... Ne mogu ovo sama. Neka objavi ovo, jer... Za dio internetske populacije koji govori ruski, ovo će uvelike pojednostaviti potragu za rješenjem ovog problema. Problem je prilično raširen! Ali primijetio sam to samo na Windows XP-u. (Sve je testirano na virtuelnoj mašini sa čistim sistemom). Hvala vam puno unapred!”

U ovom članku pokušaću da vam kažem kako možete centralno aktivirati i konfigurisati uslugu Windows Remote Management (WinRM) na svim ciljnim računarima koristeći Group Policy. Dozvolite mi da vas podsjetim da je Windows Remote Management posebna usluga koja omogućava administratorima da dobiju mogućnost daljinskog pristupa i upravljanja klijentskim i serverskim Windows operativnim sistemima (a mislim da ako ste ranije koristili Microsoft Sysinternals paket uslužnih programa, onda bi vam se svidjelo WRM).
Uzmimo običan PC sa i na kojem funkcija Windows Remote Management nije aktivirana. U komandnoj liniji unesite sljedeću naredbu:


, trebali biste vidjeti sljedeću poruku o grešci koja ukazuje da WRM nije instaliran:
WSMan Fault. Klijent se ne može povezati na odredište navedeno u zahtjevu. Broj greške: - 2144108526 0x80338012

Ako trebate ručno konfigurirati WinRM na zasebnom sistemu, samo upišite naredbu:

Winrm quickconfig

Ako trebate da konfigurišete WinRM na grupi računara, možete koristiti posebne postavke smernica grupe. Politika koja nas zanima nalazi se u odjeljku: Konfiguracija računara -> Politika -> Windows komponente -> Windows daljinsko upravljanje (WinRM) -> WinRM usluga. Potrebno je aktivirati sljedeće parametre:
Dozvolite automatsku konfiguraciju slušalaca
Dozvoli osnovnu autentifikaciju


U odeljku IPv4 filtera označavamo *, što znači da računar može prihvatiti veze (i stoga kontrolisati komande) sa bilo kog mesta, što znači da će slušaoci na računaru prihvatiti zahteve na svim IP interfejsima.


Zatim u odjeljku Konfiguracija računara -> Smjernice -> Windows komponente -> Windows Remote Shell, aktivirajte stavku:
Dozvoli daljinski pristup ljusci


I na kraju, potrebno je da podesite tip pokretanja Windows Remote Service-a na „Automatski“. Dozvolite mi da vas podsjetim da možete kontrolirati način na koji se servisi pokreću iz sljedećeg odjeljka grupnih politika: Konfiguracija računara -> Windows postavke -> Sigurnosne postavke -> Sistemske usluge.


Nakon aktivacije WinRM-a pomoću Group Policy, provjerite status usluge na klijentskom sistemu koristeći poznatu naredbu:


Uvjerimo se da je tip pokretanja usluge WinRM postavljen na automatski. Iako je zapravo tip pokretanja „automatski sa odgodom“, jer Po defaultu, WinRM servis ima postavljeno kašnjenje pokretanja (parametar DelayedAutoStart=1 u grani HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WinRM).

Sada, nakon aktivacije WinRM-a koristeći Group Policy, ovim sistemom se može daljinski upravljati pomoću WinRS komandi. Sljedeća komanda će otvoriti komandnu liniju koja radi na udaljenom sistemu:

Winrs –r:computer01 cmd

Kada se pojavi prozor komandne linije, možete izvršiti i vidjeti rezultate bilo koje komande na udaljenom računaru, kao da na njoj radite lokalno. Imajte na umu da WinRM takođe mora biti aktiviran na vašem računaru domaćinu.

mob_info