Izvršite naredbe konzole na udaljenim računalima preko mreže. WinRM - daljinski rad s parametrima naredbe PowerShell Winrm

Ovaj članak govori o tome kako to izvesti naredbe konzole na udaljenim računalima na mreži, dati su neki vrlo korisni primjeri za administratori sustava timovi.

Koristim 2 alata za daljinsko izvršavanje konzolnih naredbi: PsExec i WinRM, svaki od njih ima svoje prednosti.

PsExec

Jedno od izvrsnih rješenja problema postavljenog u naslovu je korištenje programa PsExec velikog Marka Russinovicha.

Program radi na principu klijent-poslužitelj: klijent radi na lokalnom računalu, koje šalje naredbe poslužitelju na udaljenom računalu. Posebnost ovog programa je da se serverski dio automatski instalira neposredno prije izvršenja naredbe, a zatim uklanja. Dakle, za izvršavanje naredbi na udaljenim strojevima dovoljno je imati administratorska prava na njima.

Ako se PsExec pokreće kao administrator koji je dio iste domene kao i udaljeno računalo, tada ne morate čak ni unositi vjerodajnice. U suprotnom, možete ih odrediti u naredbenom retku ili će vas PsExec pitati za njih. PsExec radi na operativnim sustavima od Windows 2000 do 64-bitnih Windows poslužitelj 2008 R2.

Sljedeće značajke vrlo su korisne u PsExecu:

  • Izvršavanje naredbe na grupi računala. Primjer: Sljedeća naredba prisiljava primjenu najnovijih pravila grupe:
    psexec @group.txt gpupdate /force
  • Pokretanje naredbi kao račun sustava. Primjer: sljedeća naredba će uzrokovati daljinski sustav prisilna provjera ažuriranja:
    psexec \\računalo -s wuauclt /detectnow
  • Kopiranje programa koji se izvršava na udaljeno računalo prije njegovog izvršavanja. Primjer: Sljedeća naredba će ažurirati članstvo u sigurnosnoj grupi ovog računala Aktivni direktorij(pristupni token) bez ponovnog pokretanja:
    psexec \\računalo -c -s čišćenje klist.exe

Teško je precijeniti korisnost ovog programa ako koristite skripte i mogućnosti konzolnih naredbi ugrađenih u Windows.

Windows daljinsko upravljanje

U početku je bilo poslužiteljska tehnologija Za daljinski upravljač hardvera, koji je predstavljen u sustavu Windows Server 2003 R2 kao dio značajke upravljanja hardverom, ali je Microsoft nedavno objavio Windows paket Management Framework, koji uključuje PowerShell 2.0 i WinRM 2.0 i instalira se na klijentske operativne sustave kao ažuriranje. Pojedinosti se mogu pronaći u članku KB968929.

Ljepota WinRM-a je jednostavnost implementacije u okruženju domene putem WSUS-a kao izborne nadogradnje OS-a i snage koju pruža kada se koristi zajedno s PowerShell-om.

Korištenje WinRM-a odvija se kroz 2 naredbe.

winrm.cmd služi za konfiguriranje postavki i dijagnosticiranje WinRM klijenta i poslužitelja.

Da bi WinRM poslužitelj počeo prihvaćati naredbe, mora se pokrenuti usluga Windows Remote Management i izvršiti njezina početna konfiguracija. Koristite naredbu

winrm quickconfig na lokalnom stroju, ili trik s tvojim ušima
psexec -s \\ime poslužitelja winrm quickconfig preko mreže koristeći PsExec kao račun sustava.

Od vas će se tražiti da automatski pokrenete WinRM uslugu i omogućite udaljene veze, složite se;)

Da biste se uspješno povezali s WinRM poslužiteljem (što znači dio poslužitelja koji prima naredbe) koji nije dio iste domene kao vaše klijentsko računalo, trebate dodati ovaj ciljni poslužitelj na “pouzdani popis” na klijentu sljedećom naredbom:

winrm postavlja winrm/config/client @(TrustedHosts="ime poslužitelja") , gdje umjesto naziva poslužitelja možete navesti IP adresu ili * (zvjezdica).

Za korisnike Windows Vista i Windows 7, ne radi kao ugrađeni administrator (to je obično slučaj), morate pokrenuti sljedeću naredbu

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

Prema zadanim postavkama, postoji ograničenje od 5 istodobnih WinRM veza s klijenta, da biste povećali taj broj, pokrenite naredbu

winrm s winrm/config/winrs @(MaxShellsPerUser="X")

winrs.exe— klijent za slanje zahtjeva poslužiteljskom dijelu. Primjer: Sljedeća naredba prisilit će ponovno pokretanje udaljenog sustava...

winrs -r:ime poslužitelja isključivanje /r /t 0

U okruženju domene, vjerodajnice aktivnog korisnika koriste se prilikom slanja naredbi. Za slanje naredbi u ime drugog korisnika koristite sklopke -u:user -p:pass. Primjer: Sljedeća naredba će očistiti lokalnu predmemoriju DNS naziva na udaljenom sustavu

winrs -r:ime poslužitelja -u:korisnik -p:pass ipconfig /flushdns

Udaljeno upravljanje sustavom Windows pomoću WinRM-a

Zapravo WinRM(ili Windows daljinsko upravljanje) i prevodi se kao „daljinski upravljač Windows". WinRM– usluga daljinskog upravljanja za operativni sustavi Windows. Od tada je uključen u operativne sustave Vidik I Server 2008, Za Windows XP I Server 2003 potrebno ga je instalirati odvojeno od ovdje. WinRM– poslužiteljski dio aplikacije za daljinsko upravljanje na koji se moguće spojiti na daljinu putem klijenta Windows Remote Shell (WinRS).

WinRM baziran na uslugama Web usluge za upravljanje (WS-Management) i koristi HTTP (port 80) ili HTTPS (443) i SOAP zahtjeve za obavljanje posla. Bez obzira na korišteni protokol, sav promet je poslan WinRM je šifriran (osim ako izričito ne onemogućite ovu opciju). Zadani protokol provjere autentičnosti je Kerberos.

U Windows Server 2008 WinRM instaliran, ali (iz sigurnosnih razloga) nije omogućen prema zadanim postavkama. Da provjerite radi li WinRM na našem stroju upišite naredbeni redak winrm nabroji winrm/config/listener

Ako nema odgovora, onda WinRM ne trčim. Kako bi se postavila WinRM na automatsko pokretanje i dopustite daljinsko povezivanje s računalom, upišite naredbu winrm quickconfig ili winrm qc

Kako biste spriječili WinRM da traži potvrdu, možete dodati ključ u poziv -miran. Saznajte više o tome fino podešavanje Možete vidjeti ugrađenu pomoć WinRM: winrm pomoć konfiguracija

Pa, ugasi to WinRM možete koristiti ovu naredbu:
winrm brisanje winrm/config/listener?IPAdress=*+Transport=HTTP

Također svi potrebne postavke može se učiniti korištenjem pravila grupe. Da biste to učinili potrebno vam je:

  • Postavite uslugu WinRM na automatsko pokretanje
  • Dopustite veze s odgovarajućim portovima (80 i 443) u vatrozidu Windows
  • Prilagodite element pravila grupe Računalna konfiguracija\Administrativni predlošci\Windows komponente\Windows Remote Management\Remote Service Upravljanje Windowsima\Dopusti automatska instalacija slušatelja (Računalna konfiguracija\Administrativni predlošci\Windows komponente\Windows Remote Management\WinRM Service\Allow automatic configuration of listeners). Ovdje ćete morati navesti IP adrese s kojih su veze dopuštene.

Sada prijeđimo na korištenje. Za povezivanje s udaljenim računalom koristimo uslužni program WinRS. WinRS- skraćenica za Windows Remote Shell(udaljeno okruženje Windows). S WinRS možemo uputiti udaljene zahtjeve računalima koja rade WinRM. Međutim, imajte na umu da vaš stroj također mora raditi WinRM raditi s WinRS.

Glavni način upotrebe WinRS je izvršavanje naredbi na udaljenom stroju. Naziv računala je određen ključem -r nakon čega slijedi naredba koju treba izvršiti, na primjer pobjednicir: SRV2 ipconfig / svi radi na udaljenom računalu SRV2 tim ipconfig/svi

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

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

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

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

« pravi")

« »}

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

gdje je ComputerName udaljeno računalo s kojeg će se uspostaviti veza.

Na računalu s kojeg ćemo se spajati unesite:

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

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

WinRM je postavio winrm/config/client @(TrustedHosts="Naziv računala" }

gdje je ComputerName računalo kojim ćemo upravljati.

Zatim uspostavljamo vezu pomoću naredbe:

winrs -r:"Naziv računala" : –u: Domena\Korisničko ime –p: Lozinka cmd.exe

gdje je Domena\Korisničko ime korisnički račun s administratorskim pravima na udaljenom računalu.

Ponekad morate pokrenuti naredbu lokalno na poslužitelju (na primjer, konfigurirati iSCSI inicijator). Da biste to učinili, povezivanje putem udaljene radne površine i pokretanje cmd-a je nezgodno, korištenje Telneta nije sigurno, ne želim instalirati ssh demon na poslužitelj...

Posebno za takve napredne slučajeve, Microsoft je, počevši od Windows Server 2003 R2, administratorima osigurao novi alat za upravljanje - Windows Remote Management (WinRM), koji vam omogućuje daljinsko izvršavanje naredbi pomoću standardnim sredstvima OS, uz osiguravanje odgovarajuće razine sigurnosti.

Ne morate čak ni instalirati dodatni programi i komponente - sve što se zove uključeno:


Postavljanje WinRM-a
Kao primjer, pogledat ću proces postavljanja WinRM-a na Windows Serveru 2008. Ovaj postupak se ne razlikuje od postavljanja WinRM-a, na primjer, na Windows Vista ili Hyper-V Serveru.

Najlakši način za konfiguriranje WinRM-a je korištenje načina brze konfiguracije upisivanjem CMD-a:
winrm quickconfig
i odgovara potvrdno (" g") na pitanje o stvaranju novog objekta slušatelja koji sluša TCP priključak 80 i koristi HTTP protokol za komunikaciju između klijenta i poslužitelja.


I to je to, poslužiteljem se može upravljati daljinski pomoću naredbe:
winrs -r: <ИМЯ_СЕРВЕРА> <КОМАНДА>
,Gdje <ИМЯ_СЕРВЕРА> - naziv ili IP adresa poslužitelja na koji se uspostavlja veza;
<КОМАНДА> - daljinska komanda koje treba izvršiti.


Ako klijent i poslužitelj nisu članovi iste domene, potrebno je dodatno navesti korisničko ime pod kojim će se naredba pokrenuti i lozinku:
winrs -r: <ИМЯ_СЕРВЕРА> -u: <ИМЯ_ПОЛЬЗОВАТЕЛЯ> -p: <ПАРОЛЬ> <КОМАНДА>

I istovremeno, kao što poruka koja se pojavljuje savjetuje, dodajte poslužitelj na popis pouzdanih čvorova ili koristite pouzdaniji protokol za komunikaciju (HTTPS).

Da biste dodali host na popis pouzdanih, pokrenite na klijentu s kojeg se planirate povezati:
winrm set winrm/config/client @(TrustedHosts=" <ИМЯ_УЗЛА1> [,<ИМЯ_УЗЛА2> ]"}


Nakon što ste konfigurirani, možete dobiti informacije o postojećim slušateljima pomoću naredbe:
winrm nabroji winrm/config/listener


Možete izbrisati postojećeg slušatelja na sljedeći način:
winrm brisanje winrm/config/listener?Address=*+Transport=HTTPS


Konfiguriranje WinRM-a pomoću HTTPS-a
U nekim ćete slučajevima možda trebati stvoriti pouzdani kanal za sigurno slanje naredbi između klijenta i poslužitelja. Za to možete koristiti HTTPS.

Međutim, da biste stvorili slušatelja s podrškom za HTTPS, trebat će vam digitalni certifikat, koji možete zatražiti od pouzdanog tijela za izdavanje certifikata, ili koristiti razne uslužne programe za stvaranje samopotpisanih (samopotpisanih) certifikata, na primjer, Makecert, uključen u Windows SDK Makecert možete zasebno preuzeti odavde.

Za izradu samopotpisanog certifikata pokrenite sljedeću naredbu:
makecert -a sha1 -r -pe -n "CN= <ИМЯ_СЕРВЕРА> " -eku 1.3.6.1.5.5.7.3.1 -ss moj -sr localmachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -m 12 <ФАЙЛ_СЕРТИФИКАТА>
, Gdje <ИМЯ_СЕРВЕРА> odgovara nazivu koji će klijent koristiti prilikom spajanja na poslužitelj;
<ФАЙЛ_СЕРТИФИКАТА> - put do datoteke u koju će biti pohranjen certifikat s javnim ključem.


Izradit će se certifikat s privatnim ključem i smjestiti u spremište certifikata lokalno računalo. Dodajte ga svojim pouzdanim korijenskim certifikatima:
certutil -addstore root cert.cer


Sada pregledajte pohranu certifikata, tamo pronađite traženi certifikat i zapišite njegov otisak (Cert Hash):
certutil -pohrani moj


Konačno, možete početi stvarati HTTPS slušatelja. Unesite naredbu:
winrm kreiraj winrm/config/Listener?Address=*+Transport=HTTPS @(Hostname=" <ИМЯ_УЗЛА> ";CertificateThumbprint=" <ХЭШ_СЕРТИФИКАТА> ";Port=" <ПОРТ> "}
,Gdje <ИМЯ_УЗЛА> - ime koje se navodi prilikom pristupa poslužitelju
<ХЭШ_СЕРТИФИКАТА>- Otisak palca koji ste naučili u prethodnom koraku (bez razmaka).
<ПОРТ> - port na koji će se klijent spojiti (TCP 443 prema zadanim postavkama).


Ako je omogućeno na poslužitelju Windows vatrozid, ne zaboravite dodati pravilo:
netsh advfirewall vatrozid dodaj pravilo name="dopusti WinRM na 4443" protokol=TCP dir=in localport=4443 action=dopusti

Ako koristite samopotpisane certifikate, morat ćete ga dodati pouzdanim korijenskim certifikatima na klijentu.

Nakon dovršetka svih koraka, konačno ćete moći izvršavati naredbe na daljinu.

Jednom sam imao problema s WinRM-om na dva poslužitelja.

1.SETSPN
S jedne strane, problem je bio u tome što je SPN HTTP/<имя сервера>bili registrirani za neke "lijeve" račun korisnik.

Našao sam ove postove s naredbom
setspn -F -Q */<имя сервера>

Onda sam ih izbrisao s naredbama
setspn -D http/<имя сервера>.<имя домена> <имя домена>\<левая учётная запись>
setspn -D http/<имя сервера> <имя домена>\<левая учётная запись>

Tada je enable-psremoting -force uspješno dovršen.

2. JEZIČNI PAKET
A na drugom poslužitelju postojao je škakljiv problem, navodno s vatrozidom Nije moguće provjeriti status vatrozida, pregledao sam hrpu stranica i otkrio rješenje intuitivno na temelju odgovora koji se odnosi na instalirani jezični paket.

WinRm QuickConfig
Usluga WinRM već radi na ovom računalu.
WSManFault
Poruka
ProviderFault
WSManFault
Poruka = ​​Nije moguće provjeriti status vatrozida.

Broj pogreške: -2147024894 0x80070002
Sustav ne može pronaći navedenu datoteku.

U odgovoru je navedeno da ovu grešku može se izliječiti uklanjanjem dodatnog jezičnog paketa.
Ali ja sam to učinio drugačije. Imam engleski operativni sustav s dodatnim ruskim jezičnim paketom. Upravo sam promijenio jezik sučelja na ruski.
Upravljačka ploča, regionalne i jezične opcije, jezici i tipkovnice promijenili su jezik sučelja s engleskog na ruski.
Odjavio sam se i ponovno prijavio. Otvorio PowerShell i ponovio WinRm QuickConfig

PS C:\Windows\system32> winrm qc

Usluga WinRM nije konfigurirana da omogući daljinsko upravljanje računalom.
Potrebno je izvršiti sljedeće izmjene:

Stvorite WinRM slušatelja na HTTP://* za prihvaćanje WS-Man zahtjeva na bilo kojoj od IP adresa ovog računala.

Izmijeniti? g

Usluga WinRM je ažurirana za daljinsko upravljanje.

Stvorio je WinRM slušatelja na HTTP://* za prihvaćanje WS-Man zahtjeva na bilo kojoj od IP adresa ovog računala.

Bilo je uspješno, ali još uvijek nedovoljno.

Prilikom pokušaja daljinskog izvršavanja naredbi na ovom poslužitelju s drugog računala pojavila se pogreška Access Denied.

Nova PSSesija: [<имя сервера>] Spajanje na udaljeni poslužitelj<имя сервера>nije uspio uz sljedeću poruku o pogrešci: Pristup je odbijen. Za više informacija pogledajte temu pomoći about_Remote_Troubleshooting.

Zatim sam ponovio Enable-PsRemoting

PS C:\Windows\system32> Omogući-PsRemoting

WinRM Quick Setup
Pokretanje naredbe "Set-WSManQuickConfig" za uključivanje ovo računalo daljinsko upravljanje korištenjem usluge WinRM.
Neophodne radnje.
1. Pokrenite ili ponovno pokrenite (ako već radi) uslugu WinRM.
2. Promjena vrste usluge WinRM u "autostart".
3. Napravite slušatelja za prihvaćanje zahtjeva na bilo kojoj IP adresi.
4. Konfigurirajte iznimke vatrozida za WS-Management servisni promet (samo http protokol).

Nastaviti?

(zadana vrijednost je "Y"):a
Usluga WinRM već je konfigurirana za prihvaćanje zahtjeva na računalu.
Usluga WinRM već je konfigurirana da omogući daljinsko upravljanje računalom.

Potvrda
Jeste li sigurni da želite izvršiti ovu radnju?
Izvođenje operacije "Registracija konfiguracije sesije" na ciljnom objektu "Konfiguracija sesije"
"Microsoft.PowerShell32" nije pronađen. Izvršit će se naredba "Register-PSSessionConfiguration Microsoft.PowerShell32"
-processorarchitecture x86 -force" za stvaranje konfiguracije sesije "Microsoft.PowerShell32". Usluga WinRM će
ponovno pokrenut."
[Y] Da - Y [A] Da za sve - A [N] Ne - N [L] Ne za sve - L [S] Obustavi - S [?] Pomoć
(zadana vrijednost je "Y"):a

Nakon toga je WinRM radio kako treba na ovom serveru.

Windows Remote Management usluga je Windows daljinskog upravljanja. Pod tim općim nazivom kriju se dva alata koja korisniku omogućuju. Za razliku od prethodna dva Windows alati( i ), koji vam je omogućio da vidite što se događa na udaljenom računalu na vašem ekranu i manipulirate udaljenim računalom pomoću miša i tipkovnice, ova dva alata radikalno se razlikuju od njih. Alati uključeni u uslugu Windows Remote Management omogućuju vam upravljanje računalom samo pomoću naredbi. Ove se naredbe pokreću iz naredbenog retka ili iz Windows Power Shell-a. Jedini odgovor o kontroli je odgovor ljuske o izvršenju naredbe. Uglavnom slijepo šaljete naredbe udaljenom računalu i primate jednosložne odgovore o tome je li izvršeno ili ne. Minimalne pogodnosti. Ali za računalnu administraciju ovo je prava stvar.

Aktiviranje Windows daljinskog upravljanja

Ispod Windows daljinskog upravljanja skrivene su dvije naredbe koje vam omogućuju pokretanje naredbi na udaljenom računalu. Ove naredbe, kao što je već spomenuto, pripadaju dvjema različitim ljuskama: Windows Command Prompt i Windows Power Shell. Mislim da je svima poznata naredba Windows niz. Pa, Power Shell je alat koji je dizajniran da zamijeni zastarjeli naredbeni redak. Na prvi pogled ovi su instrumenti vrlo slični. Ali u stvarnosti je Power Shell viši naredbeni redak, koji već jako dugo nije doživio veće promjene. Upravo u vezi s tim pripremana mu je zamjena.

Da biste mogli daljinski upravljati svojim računalom koristeći Windows Daljinsko upravljanje, ciljno računalo mora biti ispravno konfigurirano. Da biste to učinili, na ciljnom računalu morate pokrenuti naredbu (u Windows prozoru naredbenog retka):

winrm quickconfig

Ova naredba omogućuje i konfigurira odgođeno automatsko pokretanje Windows usluge Daljinsko upravljanje (usput, također možete koristiti alat za usluge), a također konfigurira odgovarajuće iznimke za, koje su potrebne za pravilan rad ovih alata.

Ali izvršenje ove naredbe nije dovoljno. Da bi udaljene veze postale moguće, ciljno računalo mora imati povjerenje u računalo s kojeg će se vršiti daljinsko upravljanje. Stvar postaje lakša ako su oba ova računala u istoj domeni - u ovom slučaju oba računala su međusobno pouzdana. Ako nije, onda trebate dodati udaljeno računalo na popis računala od povjerenja, bilo po imenu ili po imenu računala (što je prilično komplicirano u kontekstu Globalne mreže).

winrm set winrm/config/client @(TrustedHosts="naziv ili IP adresa udaljenog računala")

Ova se naredba mora koristiti na udaljenom računalu, navodeći adresu računala s kojeg će se naredbe slati na izvršenje.

Daljinsko upravljanje pomoću Windows daljinskog upravljanja

Pa, konačno je došlo vrijeme da se upoznate sa samim naredbama daljinskog upravljača. U okruženju naredbenog retka to je moguće pomoću naredbe

pobjednici

a u okruženju Power Shell – naredba

Možete vidjeti sintaksu ovih naredbi u samim okruženjima ako pozovete pomoć za ove naredbe. Dat ću samo opći pregled takvih naredbi:

icm naziv_računala (bilo koja naredba)
winrs -r: Ime_računala -u: Korisničko_ime Bilo koja_naredba

Nadam se da to razumiješ naziv_računala, Korisničko ime I bilo koja_naredba mora se zamijeniti varijablama koje odgovaraju vašim željama. I ovdje morate uzeti u obzir činjenicu da ta ista naredba mora pripadati ljusci u kojoj se odvija daljinsko upravljanje.