Remote cmd. Izvršavanje komandi konzole na udaljenim računarima preko mreže

PsExec je uslužni program za daljinsko izvršenje komande

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

Uslužni program PsExec dio je paketa PsTools iz Sysinternals. Omogućava vam da izvršavate komande na udaljenim računarima i ne zahteva instalaciju na sistemu. Da biste koristili uslužni program, jednostavno ga kopirajte u fasciklu sa izvršnim datotekama (npr. C:\Windows\system32) i pokrenite ga iz bilo koje ljuske komandne linije: 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 raspakuje ovaj resurs u skriveni administrativni direktorij udaljenog računara 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 sistem, oni će također biti kopirani u ovaj folder.

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 PsExec-a za prijenos podataka (unos komandi i primanje rezultata). Po završetku, PsExec zaustavlja uslugu i uklanja je sa ciljnog računara.

Sintaksa za PsExec je sljedeća:

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

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

Kao primjer, obrišite dns keš memoriju na udaljenom računaru SRV1:

psexec \\SRV1 ipconfig /flushdns

Komanda će biti pokrenuta na SRV1 računaru pod vašim akreditivima. Kada se ipconfig završi, sav tekstualni izlaz će biti poslan na vaš računar, plus kod greške će biti vraćen. Ako je komanda bila uspješna, bit će 0.

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


PsExec vam omogućava da pokrenete komandu na više računara u isto vreme. Da biste to učinili, možete unijeti imena računara odvojena zarezima: psexec \\SRV1,SRV2 ili ih spremite u tekstualnu datoteku, a zatim navedite njenu adresu: psexec@c:\comp.txt. Ako umjesto imena računara stavite zvjezdicu, ovako: psexec \\*, tada će se naredba izvršiti na svim računarima u domeni.


I još jedan zanimljiv način korištenja uslužnog programa PsExec. Ako ne navedete ime računara, komanda se podrazumevano izvodi na lokalnom sistemu. Koristeći ključ -s možete pokrenuti programe pod sistemskim nalogom. Na primjer, počnimo sesiju komandne linije: psexec -s cmd a zatim komandu ko sam ja Provjerimo pod kojim korisnikom trenutno radimo. Ova funkcija može biti korisna za otklanjanje grešaka u programima ili pristup skrivenim SAM i SECURITY ključevima registratora.


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

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

psexec \\SRV1 -c test.exe

Ako ovaj parametar nije postavljen, onda se aplikacija mora nalaziti u sistemskoj fascikli udaljenog računara. Ako takav program već postoji na udaljenom računaru i nije u sistemskom direktoriju, tada morate navesti punu putanju do njega (ako ime programa sadrži razmake, onda se mora staviti u navodnike):

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

Ako zajedno sa ključem -c koristiti ključ -f tada će čak i ako je program već na udaljenom sistemu, biti prepisan. I sa ključem -v bit će prepisan samo ako je kopirana verzija programa novija od one instalirane u sistemu.

Rad programa u interaktivnom načinu rada. Podrazumevano, PsExec izvršava komande u skrivenom režimu, to jest, nikakvi prozori ili dijalozi se ne prikazuju na sistemu gde se komanda izvršava. Međutim, postoji opcija da se to promijeni pomoću ključa -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 završi. U ovom 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 završi. Ovu postavku treba koristiti samo kada se izvršavaju neinteraktivne aplikacije.

Koristi se za pokretanje programa u . Može biti potrebno u operativni sistemi Windows Vista i noviji za pokretanje nekih programa koji unose promjene u sistemske postavke (na primjer, regedit).

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

Završeno pozadinske informacije o svim ključevima programa možete dobiti jednostavnim unosom naredbe psexec in komandna linija bez parametara.

Uslužni programi kao što je Telnet i programi za daljinsko upravljanje kao što je Symantecov PC Anywhere omogućavaju vam da pokrenete programe na udaljenim sistemima, ali ih nije tako lako instalirati jer također morate instalirati klijenta softver na onim udaljenim sistemima kojima treba pristupiti. PsExec je lagana verzija Telneta. Omogućava vam da pokrenete procese na udaljenim sistemima s punom snagom interfejsa aplikacije interaktivne konzole bez potrebe da ručno instalirate klijentski softver. Glavna prednost PsExec-a je mogućnost interaktivnog pozivanja interfejsa komandne linije na udaljenim sistemima i daljinskog pokretanja alata kao što je IpConfig. Ovo je jedini način za prikaz informacija o udaljenom sistemu na ekranu lokalnog računara.

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

Instalacija

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

PsExec radi na Windows Vista, NT 4.0, Win2000, Windows XP i Server 2003 operativnim sistemima, uključujući 64-bitne verzije OS-a

Upotreba

Članak Marka Rusinoviča u izdanju Windows IT Pro Magazina iz jula 2004. opisuje dodatne metode za rad sa programom. psexec.

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

kompjuter

Kaže PsExec-u da pokrene aplikaciju na navedenom računaru ili računarima. Ako ime računara nije navedeno, tada će PsExec pokrenuti aplikaciju na lokalnom sistemu; ako je umjesto imena računara naveden znak zvjezdice (\\*), PsExec će pokrenuti aplikaciju na svim računalima u trenutnoj domeni.

@file

Kaže PsExec-u da pokrene aplikaciju na svim računarima 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 sistem radi izvršavanja. Ako ovaj parametar nije postavljen, onda se aplikacija mora nalaziti u sistemskoj fascikli udaljenog sistema.

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

Navedeni profil naloga nije učitan.

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

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

Kada proces započne, korisniku se dodeljuju ograničena prava (ukidaju se prava grupe Administratori i korisniku se dodeljuju samo prava koja su dodeljena grupi Korisnici). U operativnom sistemu Windows Vista, proces počinje sa nizak nivo pouzdanost.

Omogućava vam da postavite kašnjenje veze sa udaljenim računarima (u sekundama).

Omogućava vam da navedete opcionalnu lozinku za korisničko ime. Ako je ovaj parametar izostavljen, od vas će biti zatraženo da unesete lozinku, a lozinka neće biti prikazana na ekranu.

Udaljeni proces se pokreće sa sistemskog naloga.

Omogućava vam da navedete opcionalno korisničko ime za prijavu na udaljeni sistem.

Navedena datoteka se kopira na udaljeni sistem umjesto postojećeg samo ako je njegov broj verzije veći ili noviji.

Omogućava vam da navedete radni direktorij (putu unutar udaljenog sistema) za proces.

Prikazuje korisnički interfejs na radnoj površini Winlogon (samo lokalni sistem).

- prioritet(prioritet)

Omogućava vam da postavite različite prioritete za proces: -niski (niski), -ispod normalnog (ispod prosjeka), -nadnormalni (iznad prosjeka), -visoki (visoki) ili -u realnom vremenu (u realnom vremenu).

program

Naziv programa za pokretanje.

argumentima

Argumenti koje treba proći (imajte na umu da putanje datoteka moraju biti specificirane kao lokalne staze na ciljnom sistemu).

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

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

Kada pristupate lokalnom sistemu, ova verzija PsExec-a se može koristiti umjesto Runasa jer PsExec ne zahtijeva administratorska prava.

Primjeri

Ova komanda poziva interaktivni interfejs komandne linije na \\marklap sistemu:

psexec \\marklap cmd

Ova komanda pokreće program IpConfig na udaljenom sistemu sa opcijom /all i prikazuje rezultirajuće podatke na ekranu lokalnog sistema:

psexec \\marklap ipconfig /all

Ova komanda kopira program test.exe na udaljeni sistem i pokreće ga interaktivno.

psexec \\marklap -c test.exe

Ako je takav program već instaliran na udaljenom sistemu i ne nalazi se u sistemskom direktoriju, navedite punu stazu do ovog programa

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

Ova naredba pokreće Regedit interaktivno sa sistemskog računa da pregleda podatke ključeva registra SAM i SECURITY:

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

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

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

Ovaj članak govori o tome kako izvršiti komande konzole na udaljenim računarima na mreži, a kao primjeri su date neke vrlo korisne komande za sistemske administratore.

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 Rusinovicha.

Program radi po principu klijent-server: na lokalnoj mašini radi klijent, koji šalje komande serveru na udaljenom računaru. Karakteristika ovog programa je da se serverski dio automatski instalira neposredno prije izvršavanja naredbe, a zatim uklanja. Dakle, za izvršavanje komandi na udaljenim mašinama, dovoljno je imati administrativna prava na njima.

Ako se PsExec pokreće kao administrator koji pripada istoj domeni kao i udaljeni računar, tada nisu ni potrebni akreditivi. U suprotnom, mogu se navesti u komandnoj liniji ili će ih PsExec tražiti. PsExec radi na operativnim sistemima od Windows 2000 do 64-bitnog Windows Server 2008 R2.

Sljedeće karakteristike su vrlo korisne u PsExec-u:

  • Pokrenite komandu na grupi računara. Primjer: Sljedeća naredba vam omogućava da forsirate najnovije grupne politike:
    psexec @group.txt gpupdate /force
  • Pokrenite komande kao sistemski nalog. Primjer: Sljedeća komanda će prisiliti udaljeni sistem da provjeri ažuriranja:
    psexec \\computer -s wuauclt /detectnow
  • Kopiranje pokrenutog programa na udaljeni računar prije izvršenja. Primjer: Sljedeća komanda će ažurirati članstvo ovog računara 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 komandi ugrađenih u Windows.

Windows daljinsko upravljanje

Prvobitno je to bila serverska tehnologija za daljinsko upravljanje hardverom koja je uvedena u Windows Server 2003 R2 kao dio komponente upravljanja hardverom, ali je Microsoft nedavno objavio Windows Management Framework paket, koji uključuje PowerShell 2.0 i WinRM 2.0 i instaliran je na klijentskim OS-ima kao ažuriranje. Detalje možete pronaći u članku KB968929.

Ljepota WinRM-a je jednostavnost implementacije u domenskom okruženju putem WSUS-a kao opcione nadogradnje OS-a i moć koja dolazi uz korištenje PowerShell-a.

Korišćenje WinRM-a se dešava kroz 2 komande.

winrm.cmd koristi se za konfigurisanje postavki i dijagnostike za WinRM klijenta i servera.

Da bi WinRM server počeo da prihvata komande, usluga Windows Remote Management mora biti pokrenuta i mora se izvršiti njena početna konfiguracija. Koristite komandu

winrm quickconfig na lokalnoj mašini, ili finta sa ušima
psexec -s \\ime servera winrm quickconfig preko mreže koristeći PsExec kao sistemski nalog.

Od vas će se tražiti da automatski pokrenete WinRM uslugu i dozvolite udaljene veze, slažete se ;)

Da biste se uspješno povezali sa WinRM serverom (što znači serverski dio koji prihvata komande) koji nije uključen u istu domenu kao vaš klijentski računar, potrebno je da dodate ovaj ciljni server na "listu pouzdanih" na klijentu sa sljedećim komanda:

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

Za korisnike 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

Podrazumevano, postoji ograničenje od 5 istovremenih WinRM konekcija sa klijenta, da biste povećali ovaj broj, pokrenite naredbu

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

winrs.exe- klijent za slanje zahtjeva na stranu servera. Primjer: Sljedeća komanda će prisiliti ponovno pokretanje udaljenog sistema...

winrs -r:ime servera isključivanje /r /t 0

U okruženju domene, vjerodajnice korisnika koji je pokrenuo naredbu koriste se prilikom slanja naredbi. Za slanje komandi u ime drugog korisnika, koriste se prekidači -u:user -p:pass. Primjer: Sljedeća komanda će obrisati lokalnu keš memoriju DNS imena na udaljenom sistemu

winrs -r:ime servera -u:korisnik -p:pass ipconfig /flushdns