Daljinsko pokretanje programa. Izvršavanje naredbi konzole na udaljenim računalima preko mreže

Ovaj članak govori o tome kako izvesti naredbe konzole na udaljenim računalima na mreži kao primjeri su dane neke vrlo korisne naredbe za administratore sustava.

Koristim 2 alata za izvršavanje naredbi na daljinskoj konzoli: PsExec i WinRM, svaki ima svoje prednosti.

psexec

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

Program radi po principu klijent-poslužitelj: na lokalnom računalu radi klijent koji šalje naredbe poslužitelju na udaljenom računalu. Značajka ovog programa je da se poslužiteljski dio automatski instalira neposredno prije izvršavanja naredbe, a zatim uklanja. Dakle, za izvršavanje naredbi na udaljenim strojevima dovoljno je imati administrativna prava na njima.

Ako se PsExec izvodi kao administrator koji pripada istoj domeni kao i udaljeno računalo, tada nisu niti potrebne vjerodajnice. Inače se mogu navesti u naredbeni redak, ili će ih sam PsExec zatražiti. PsExec radi na operativnim sustavima od Windows 2000 do 64-bitnog Windows Server 2008 R2.

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

  • Pokrenite naredbu na grupi računala. Primjer: Sljedeća naredba omogućuje vam da prisilite najnovija pravila grupe:
    psexec @group.txt gpupdate /force
  • Pokrenite naredbe kao račun sustava. Primjer: Sljedeća naredba prisilit će udaljeni sustav da provjeri ažuriranja:
    psexec \\računalo -s wuauclt /detectnow
  • Kopiranje pokrenutog programa na udaljeno računalo prije izvršenja. Primjer: Sljedeća naredba ažurirat će članstvo ovog računala u sigurnosnoj grupi Active Directory (pristupni token) bez ponovnog pokretanja:
    psexec \\computer -c -s klist.exe čišćenje

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

Windows daljinsko upravljanje

Izvorno je to bila poslužiteljska tehnologija za daljinsko upravljanje hardverom koja je uvedena u Windows Server 2003 R2 kao dio komponente upravljanja hardverom, no Microsoft je nedavno izdao Windows Management Framework paket, koji uključuje PowerShell 2.0 i WinRM 2.0 i instaliran je na klijentske OS kao ažuriranje. Pojedinosti možete pronaći u članku KB968929.

Ljepota WinRM-a je jednostavnost implementacije u okruženju domene putem WSUS-a kao opcione nadogradnje OS-a i snaga koja dolazi s korištenjem PowerShell-a.

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

winrm.cmd koristi se za konfiguriranje postavki i dijagnostike za WinRM klijenta i poslužitelja.

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

winrm quickconfig na lokalnom stroju, ili finta s 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, slažete se ;)

Da biste se uspješno povezali s WinRM poslužiteljem (što znači poslužiteljski dio koji prihvaća naredbe) koji nije uključen u istu domenu kao vaše klijentsko računalo, morate dodati ovaj ciljni poslužitelj na "pouzdani popis" na klijentu sa sljedećim naredba:

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

Za korisnike sustava Windows Vista i Windows 7 koji ne rade 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 ovaj broj, pokrenite naredbu

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

winrs.exe- klijent za slanje zahtjeva na strani poslužitelja. Primjer: Sljedeća naredba prisilno će ponovno pokrenuti udaljeni sustav...

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

U okruženju domene, vjerodajnice korisnika koji je pokrenuo naredbu koriste se prilikom slanja naredbi. Za slanje naredbi u ime drugog korisnika, koriste se prekidači -u:user -p:pass. Primjer: Sljedeća naredba će izbrisati lokalnu predmemoriju DNS imena na udaljenom sustavu

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

Uslužni programi kao što je Telnet i programi za daljinsko upravljanje kao što je Symantecov PC Anywhere omogućuju pokretanje programa na udaljenim sustavima, ali ih nije tako jednostavno instalirati jer također morate instalirati klijenta softver na onim udaljenim sustavima kojima treba pristupiti. PsExec je lagana verzija Telneta. Omogućuje vam pokretanje procesa na udaljenim sustavima s punom snagom sučelja interaktivne konzole bez potrebe za ručnom instalacijom klijentskog softvera. Glavna prednost PsExec-a je mogućnost interaktivnog pozivanja sučelja naredbenog retka na udaljenim sustavima i daljinskog pokretanja alata kao što je IpConfig. Ovo je jedini način za prikaz informacija o udaljenom sustavu na zaslonu lokalnog računala.

Bilješka. Neki skeneri virusa izvještavaju da je jedan ili više ovih programa zaraženo virusom "remote admin". Niti jedan od programa uključenih u paket PsTools ne sadrži viruse, ali su ih koristili virusi, što uzrokuje ova upozorenja.

Montaža

Samo kopirajte program PsExec u izvršnu mapu. Kada unesete naredbu psexec, prikazuje se pomoć o sintaksi naredbe.

Pokreće se program PsExec operativnim sustavima Windows Vista, NT 4.0, Win2000, Windows XP i Server 2003, uključujući 64-bitne verzije OS-a

Korištenje

Članak Marka Russinovicha u izdanju Windows IT Pro Magazina iz srpnja 2004. opisuje dodatne metode za rad s programom. psexec.

upotreba: psexec [\\computer[,computer2[,...] | @file][-u korisnik [-p lozinka]][-n s][-l][-s|-e][-x][-i [sesija]][-c [-f|-v]] [-w imenik][-d][-<приоритет>][-a n,n,... ] program [argumenti]

Računalo

Govori PsExecu da pokrene aplikaciju na navedenom računalu ili računalima. Ako naziv računala nije naveden, tada će PsExec pokrenuti aplikaciju na lokalnom sustavu; ako je umjesto imena računala naveden znak zvjezdice (\\*), PsExec će pokrenuti aplikaciju na svim računalima u trenutnoj domeni.

@datoteka

Govori PsExecu da pokrene aplikaciju na svim računalima navedenim u navedenoj tekstualnoj datoteci.

Procesori na kojima se aplikacija može pokrenuti odvojeni su zarezima, a procesori su numerirani počevši od 1. Na primjer, da biste pokrenuli aplikaciju na procesorima dva i četiri, upišite "-a 2,4"

Navedeni program se kopira na udaljeni sustav radi izvršavanja. Ako ovaj parametar nije postavljen, tada se aplikacija mora nalaziti u sistemskoj mapi udaljenog sustava.

Određuje da se ne čeka da se aplikacija dovrši. Ovu postavku treba koristiti samo kada se izvode neinteraktivne aplikacije.

Navedeni profil računa nije učitan.

Navedeni program se kopira na udaljeni sustav, čak i ako datoteka već postoji na udaljenom sustavu.

Program koji se izvodi dobiva pristup radnoj površini navedene sesije na udaljenom sustavu. Ako sesija nije postavljena, tada se proces izvodi u sesiji konzole.

Kada proces započne, korisniku se dodjeljuju ograničena prava (ukidaju se prava grupe Administratori i korisniku se dodjeljuju samo prava koja su dodijeljena grupi Korisnici). U sustavu Windows Vista proces počinje s niska razina pouzdanost.

Omogućuje postavljanje odgode veze na udaljena računala (u sekundama).

Omogućuje vam određivanje neobavezne lozinke za korisničko ime. Ako je ovaj parametar izostavljen, od vas će se tražiti da unesete lozinku, a lozinka se neće prikazati na ekranu.

Udaljeni proces pokreće se s računa sustava.

Omogućuje vam da navedete izborno korisničko ime za prijavu na udaljeni sustav.

Navedena datoteka se kopira u udaljeni sustav umjesto postojećeg samo ako je njezin broj verzije veći ili noviji.

Omogućuje vam da navedete radni direktorij (put unutar udaljenog sustava) za proces.

Prikazuje korisničko sučelje na radnoj površini Winlogon (samo lokalni sustav).

- prioritet(prioritet)

Omogućuje postavljanje različitih prioriteta za proces: -niski (niski), -ispod normale (ispod prosjeka), -nadnormalni (iznad prosjeka), -visoki (visoki) ili -u stvarnom vremenu (u stvarnom vremenu).

program

Naziv programa za pokretanje.

argumentima

Argumenti za proslijeđivanje (imajte na umu da putevi datoteke moraju biti specificirani kao lokalni putovi na ciljnom sustavu).

Da biste naveli naziv aplikacije koji sadrži razmake, koristite navodnike, kao što je psexec \\marklap "c:\longname\app.exe". Uneseni podaci se prenose na udaljeni sustav kada pritisnete tipku "Enter", da biste dovršili daljinski proces, potrebno je pritisnuti kombinaciju tipki Ctrl-C.

Ako nije navedeno korisničko ime, udaljeni proces se izvodi pod istim računom kao i program PsExec. Međutim, budući da je udaljeni proces lažno predstavljanje, neće imati pristup mrežnim resursima na udaljenom sustavu. Ako je navedeno korisničko ime, tada se udaljeni proces izvodi pod navedenim računom i pristupa istim mrežnim resursima na udaljenom sustavu kao i račun. Imajte na umu da se lozinka šalje udaljenom sustavu u čistom tekstu.

Prilikom pristupa lokalnom sustavu, ova verzija PsExec-a može se koristiti umjesto Runasa jer PsExec ne zahtijeva administrativna prava.

Primjeri

Ova naredba poziva interaktivno sučelje naredbenog retka na \\marklap sustavu:

psexec \\marklap cmd

Ova naredba pokreće program IpConfig na udaljenom sustavu s opcijom /all i prikazuje rezultirajuće podatke na zaslonu lokalnog sustava:

psexec \\marklap ipconfig /all

Ova naredba kopira program test.exe na udaljeni sustav i pokreće ga interaktivno.

psexec \\marklap -c test.exe

Ako je takav program već instaliran na udaljenom sustavu i ne nalazi se u direktoriju sustava, navedite puni put do ovog programa

psexec \\marklap c:\bin\test.exe

Ova naredba pokreće Regedit interaktivno s računa sustava za pregled podataka ključa registra SAM i SECURITY:

psexec -i -d -s c:\windows\regedit.exe

Ova naredba se koristi za pozivanje Internet programi Explorer kao ograničeni korisnik:

psexec -l -d "c:\programske datoteke\internet explorer\iexplore.exe"

PsExec - uslužni program za daljinsko izvršavanje naredbi

Izvođenje naredbi na udaljenom računalu prilično je uobičajen zadatak. To može biti potrebno za promjenu postavki sustava, instaliranje ili uklanjanje programa i još mnogo toga. Za rješavanje takvih problema postoji dosta različitih alata, u rasponu od ozbiljnih softverskih sustava kao što je System Center Configuration Manager do skromnih uslužnih programa naredbenog retka. O jednom od ovih uslužnih programa bit će riječi u ovom članku.

Uslužni program PsExec dio je paketa PsTools tvrtke Sysinternals. Omogućuje vam izvršavanje naredbi na udaljena računala i ne zahtijeva instalaciju u sustav. Da biste koristili uslužni program, jednostavno ga kopirajte u mapu s izvršnim datotekama (npr. C:\Windows\system32) i pokrenite ga iz bilo koje ljuske naredbenog retka: Cmd ili PowerShell.
Princip rada programa je sljedeći: u resursima izvršne datoteke PsExec.exe postoji još jedna izvršna datoteka - PSEXESVC, koja je Windows usluga. Prije izvršavanja naredbe, PsExec raspakira ovaj resurs u skrivenu administrativnu mapu udaljenog računala Admin$ (C:\Windows), u datoteku C:\Windows\system32\psexesvc.exe.

Bilješka. Ako koristite ključ -c rekao programu da kopira izvršne datoteke na ovaj sustav, one će također biti kopirane u ovu mapu.

Nakon što je kopiranje završeno, PsExec instalira i pokreće uslugu koristeći Windows Functions API za upravljanje uslugama. Zatim, nakon pokretanja PSEXESVC-a, uspostavlja se veza između njega i PsExeca za prijenos podataka (unos naredbi i primanje rezultata). Po završetku, PsExec zaustavlja uslugu i uklanja je s ciljnog računala.

Sintaksa za PsExec je sljedeća:

psexec \\računalo [-u korisnik [-p lozinka]] program [argumenti]

Korisničko ime i lozinka mogu se izostaviti, u tom slučaju će se daljinski proces pokrenuti pod istim računom kao i program PsExec. Međutim, budući da je udaljeni proces lažno predstavljanje, neće imati pristup mrežnim resursima na udaljenom sustavu. Ako navedete korisničko ime, tada će se daljinski proces pokrenuti pod navedenim računom i dobiti pristup istim mrežnim resursima udaljenog sustava kao dani račun. Međutim, imajte na umu da se lozinka udaljenom sustavu šalje u čistom tekstu.

Kao primjer, očistimo dns predmemoriju na udaljenom računalu SRV1:

psexec \\SRV1 ipconfig /flushdns

Naredba će se pokrenuti na računalu SRV1 pod vašim vjerodajnicama. Kada se ipconfig dovrši, sav tekstualni izlaz bit će poslan na vaše računalo, plus kôd pogreške će biti vraćen. Ako je naredba bila uspješna, bit će 0.

Ako trebate izvršiti nekoliko naredbi, bolje je uspostaviti interaktivnu sesiju s udaljenim računalom. Da biste to učinili, unesite naredbu psexec \\SRV1 cmd. Sada će se naredbe unesene na lokalnom računalu izvršiti na udaljenom računalu SRV1.


PsExec vam omogućuje pokretanje naredbe na više računala u isto vrijeme. Da biste to učinili, možete unijeti nazive računala odvojene zarezima: psexec \\SRV1,SRV2 ili ih spremite u tekstualnu datoteku, a zatim navedite njezinu adresu: psexec@c:\comp.txt. Ako umjesto naziva računala stavite zvjezdicu, ovako: psexec \\*, tada će se naredba izvršiti na svim računalima u domeni.


I još jedan zanimljiv način korištenja uslužnog programa PsExec. Ako ne navedete naziv računala, naredba se prema zadanim postavkama izvodi na lokalnom sustavu. Korištenje ključa -s možete pokrenuti programe pod računom sustava. Na primjer, započnimo sesiju naredbenog retka: psexec -s cmd a zatim zapovijed tko sam ja Provjerimo pod kojim korisnikom trenutno radimo. Ova značajka može biti korisna za otklanjanje pogrešaka u programima ili pristup skrivenim SAM i SECURITY ključevima registra.


Pa, nekoliko riječi o ključevima programa. Neću sve opisivati, reći ću vam o najzanimljivijim:

Navedeni program se kopira na udaljeni sustav radi izvršavanja. Na primjer:

psexec \\SRV1 -c test.exe

Ako ovaj parametar nije postavljen, tada se aplikacija mora nalaziti u sistemskoj mapi udaljenog računala. Ako takav program već postoji na udaljenom računalu i ne nalazi se u direktoriju sustava, tada morate navesti puni put do njega (ako naziv programa sadrži razmake, onda se mora staviti u navodnike):

psexec \\SRV1 "c:\program files\test.exe"

Ako zajedno s ključem -c koristiti ključ -f onda čak i ako je program već na udaljenom sustavu, bit će prebrisan. I to s ključem -v bit će prebrisan samo ako je kopirana verzija programa novija od one instalirane u sustavu.

Rad programa u interaktivnom načinu rada. Prema zadanim postavkama, PsExec izvršava naredbe u skrivenom načinu rada, to jest, nikakvi prozori ili dijalozi nisu prikazani na sustavu u kojem se naredba izvršava. Međutim, postoji mogućnost da se to promijeni ključem -i. Nakon toga, možete odrediti broj sesije u kojoj će se prikazati prozori, ili ga ne možete odrediti, tada će se sučelje prikazati u sesiji konzole.

Određuje da se ne čeka da se aplikacija dovrši. U tom slučaju nećemo primiti izlazne podatke od uslužnog programa konzole, ali ćemo moći pokrenuti sljedeće bez čekanja da se prethodna naredba dovrši. Ovu postavku treba koristiti samo kada se izvode neinteraktivne aplikacije.

Koristi se za pokretanje programa u . Možda će biti potrebno na Windows Vista i novijim operativnim sustavima za pokretanje nekih programa koji mijenjaju postavke sustava (na primjer, regedit).

A uz pomoć ovog ključa, naprotiv, možete sniziti autoritet. Kada se proces pokrene, korisniku se, bez obzira pripada li grupi Administratori, dodjeljuju ograničena prava (ukidaju se prava grupe "Administratori", a korisniku se dodjeljuju samo prava koja su dodijeljena grupi "Korisnici") .

Dovršeno popratne informacije o svim ključevima programa možete dobiti jednostavnim unosom naredbe psexec na naredbenom retku bez parametara.