Udaljeni cmd. Izvršavanje naredbi konzole na udaljenim računalima preko mreže

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

Izvođenje naredbi na udaljenom računalu prilično je uobičajen zadatak. Ovo 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, od ozbiljnih softverskih sustava kao što je System Center Configuration Manager do skromnih uslužnih programa naredbenog retka. O jednom od tih 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. Za korištenje uslužnog programa 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.
Načelo rada programa je sljedeće: u resursima izvršne datoteke PsExec.exe nalazi se još jedna izvršna datoteka - PSEXESVC, koja je Windows usluga. Prije izvršenja 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 u ovaj sustav, one će također biti kopirane u ovu mapu.

Nakon dovršetka kopiranja, PsExec instalira i pokreće uslugu koristeći Windows Functions API za upravljanje uslugama. Zatim se nakon pokretanja PSEXESVC-a uspostavlja veza između njega i PsExeca za prijenos podataka (unos naredbi i primanje rezultata). Nakon završetka, 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 kojem slučaju će se udaljeni proces pokrenuti pod istim računom kao i program PsExec. Međutim, budući da je udaljeni proces lažno predstavljanje, on 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 ovaj račun. Međutim, imajte na umu da se lozinka šalje udaljenom sustavu u čistom tekstu.

Kao primjer, izbrišite dns predmemoriju na udaljenom računalu SRV1:

psexec \\SRV1 ipconfig /flushdns

Naredba će se pokrenuti na SRV1 računalu pod vašim vjerodajnicama. Kada ipconfig dovrši, sav tekstualni izlaz bit će poslan na vaše računalo, uz to će se vratiti kod pogreške. 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 naredbe unesene na lokalnom računalu biti izvršene 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 imena računala odvojena zarezima: psexec \\SRV1,SRV2 ili ih spremite u tekstualnu datoteku i 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 pomoću uslužnog programa PsExec. Ako ne navedete naziv računala, naredba se prema zadanim postavkama izvodi na lokalnom sustavu. Pomoću ključa -s možete pokretati programe pod računom sustava. Na primjer, pokrenimo 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 programa ili pristup skrivenim ključevima registra SAM i SECURITY.


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

Navedeni program se kopira na udaljeni sustav za izvođenje. 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 nije u direktoriju sustava, morate navesti punu stazu do njega (ako naziv programa sadrži razmake, mora biti u navodnicima):

psexec \\SRV1 "c:\programske datoteke\test.exe"

Ako zajedno s ključem -c koristiti ključ -fč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 prikrivenom načinu rada, to jest, nikakvi prozori ili dijalozi se ne prikazuju na sustavu gdje se naredba izvršava. Međutim, postoji mogućnost da to promijenite ključem -i. Nakon toga možete odrediti broj sesije u kojoj želite prikazati prozore ili ga ne možete odrediti, tada će sučelje biti prikazano u sesiji konzole.

Određuje da se ne čeka da aplikacija završi. U ovom slučaju nećemo primiti izlazne podatke iz 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 izvode neinteraktivne aplikacije.

Koristi se za pokretanje programa u . Može biti potrebno u operativni sustavi Windows Vista i noviji za pokretanje nekih programa koji mijenjaju postavke sustava (na primjer, regedit).

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

Kompletan popratne informacije o svim ključevima programa možete dobiti jednostavnim unosom naredbe psexec u naredbeni redak bez parametara.

Uslužni programi kao što je Telnet i programi za daljinsko upravljanje kao što je Symantecov PC Anywhere omogućuju vam pokretanje programa na udaljenim sustavima, ali nije ih tako jednostavno instalirati jer morate instalirati i klijenta softver na onim udaljenim sustavima kojima je potrebno pristupiti. PsExec je lagana verzija Telneta. Omogućuje vam pokretanje procesa na udaljenim sustavima s punom snagom interaktivnog konzolnog aplikacijskog sučelja bez potrebe za ručnom instalacijom klijentskog softvera. Glavna prednost PsExeca 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 ekranu lokalnog računala.

Bilješka. Neki skeneri za otkrivanje virusa javljaju da je jedan ili više ovih programa zaraženo virusom "daljinskog administratora". Nijedan od programa uključenih u paket PsTools ne sadrži viruse, ali su ih koristili virusi, što je uzrok ovih upozorenja.

Montaža

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

PsExec radi na 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 [\\računalo[,računalo2[,...] | @datoteka][-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

Kaže PsExecu da pokrene aplikaciju na navedenom računalu ili računalima. Ako naziv računala nije naveden, PsExec će pokrenuti aplikaciju na lokalnom sustavu; ako je naziv računala zvjezdica (\\*), PsExec će pokrenuti aplikaciju na svim računalima u trenutnoj domeni.

@datoteka

Kaže 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, za pokretanje aplikacije na procesorima dva i četiri upišite "-a 2,4"

Navedeni program se kopira na udaljeni sustav za izvođenje. Ako ovaj parametar nije postavljen, tada se aplikacija mora nalaziti u sistemskoj mapi udaljenog sustava.

Određuje da se ne čeka da aplikacija završ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 pokreće dobiva pristup radnoj površini navedene sesije na udaljenom sustavu. Ako sesija nije postavljena, proces se izvodi u sesiji konzole.

Kada se proces pokrene, korisniku se dodjeljuju ograničena prava (prava Administratorske grupe se poništavaju i korisniku se dodjeljuju samo ona prava koja su dodijeljena Korisniciskoj grupi). U sustavu Windows Vista postupak počinje s niska razina pouzdanost.

Omogućuje postavljanje odgode veze s udaljenim računalima (u sekundama).

Omogućuje vam da navedete izbornu lozinku za korisničko ime. Ako je ovaj parametar izostavljen, od vas će se tražiti da unesete lozinku, a lozinka neće biti prikazana na ekranu.

Udaljeni proces pokreće se sa sistemskog računa.

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

Navedena datoteka kopira se na udaljeni sustav umjesto postojeće samo ako je njezin broj verzije viši ili noviji.

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

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

- prioritet(prioritet)

Omogućuje vam postavljanje različitih prioriteta za proces: -low (nizak), -belownormal (ispod prosjeka), -abovenormal (iznad prosjeka), -high (visok) ili -realtime (stvarno vrijeme).

program

Naziv programa za pokretanje.

argumenti

Argumenti za prosljeđivanje (imajte na umu da staze datoteka moraju biti navedene kao lokalne staze na ciljnom sustavu).

Da biste odredili naziv aplikacije koji sadrži razmake, koristite navodnike, kao što je psexec \\marklap "c:\longname\app.exe". Uneseni podaci prenose se u udaljeni sustav pritiskom na tipku "Enter", za završetak udaljenog procesa potrebno je pritisnuti kombinaciju tipki Ctrl-C.

Ako nije navedeno korisničko ime, udaljeni proces radi pod istim računom kao i program PsExec. Međutim, budući da je udaljeni proces lažno predstavljanje, on 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.

Kada pristupate lokalnom sustavu, ovu verziju PsExeca možete koristiti umjesto Runasa jer PsExec ne zahtijeva administratorska 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 dobivene podatke na ekranu lokalnog sustava:

psexec \\marklap ipconfig /all

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

psexec \\marklap -c test.exe

Ako je takav program već instaliran na udaljenom sustavu i nije u direktoriju sustava, navedite punu stazu do ovog programa

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

Ova naredba interaktivno pokreće Regedit sa sistemskog računa za prikaz SAM i SECURITY podataka o ključu registra:

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

Ova naredba se koristi za pozivanje internetski programi Istraživač kao ograničeni korisnik:

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

Ovaj članak govori o tome kako izvršiti konzolne naredbe na udaljenim računalima na mreži, neke vrlo korisne naredbe za administratore sustava dane su kao primjeri.

Koristim 2 alata za izvršavanje naredbi udaljene konzole: PsExec i WinRM, svaki ima svoje prednosti.

psexec

Jedno od izvrsnih rješenja problema postavljenog u naslovu je korištenje programa PsExec 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š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 pripada istoj domeni kao i udaljeno računalo, tada nisu potrebne vjerodajnice. U suprotnom, mogu se odrediti u naredbenom retku ili će ih PsExec zatražiti. PsExec radi na operativnim sustavima od Windows 2000 do 64-bitnog Windows Server 2008 R2.

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

  • Pokrenite naredbu na grupi računala. Primjer: Sljedeća naredba omogućuje vam prisilno postavljanje najnovijih pravila grupe:
    psexec @group.txt gpupdate /force
  • Pokretanje naredbi kao račun sustava. Primjer: Sljedeća naredba prisilit će udaljeni sustav da provjeri ima li ažuriranja:
    psexec \\računalo -s wuauclt /detectnow
  • Kopiranje pokrenutog programa na udaljeno računalo prije izvođenja. Primjer: Sljedeća naredba će ažurirati članstvo ovog računala u sigurnosnoj grupi Active Directory (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

Izvorno je to bila tehnologija na strani poslužitelja za daljinsko upravljanje hardverom koja je predstavljena u sustavu Windows Server 2003 R2 kao dio komponente Hardware Management, ali nedavno je Microsoft izdao paket Windows Management Framework koji uključuje PowerShell 2.0 i WinRM 2.0 i instaliran je na klijentu OS kao ažuriranje. Pojedinosti se mogu pronaći u članku KB968929.

Ljepota WinRM-a je jednostavnost postavljanja u domensko okruženje putem WSUS-a kao izborne nadogradnje OS-a i snaga koja dolazi s korištenjem PowerShell-a.

Korištenje WinRM-a događa se kroz 2 naredbe.

winrm.cmd koristi se za konfiguriranje postavki i dijagnostike za WinRM klijent i poslužitelj.

Kako bi WinRM poslužitelj počeo prihvaćati naredbe, datoteka windows servis Daljinsko upravljanje i napravio početnu konfiguraciju. 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.

Zatražit će vas da automatski pokrenete WinRM uslugu i omogućite udaljene veze, složite se ;)

Kako biste se uspješno povezali s WinRM poslužiteljem (što znači dio poslužitelja 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 postavlja winrm/config/client @(TrustedHosts="ime poslužitelja") , gdje umjesto naziva 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), trebate 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 strani poslužitelja. Primjer: Sljedeća naredba će prisilno 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 sklopke -u:user -p:pass. Primjer: Sljedeća naredba će očistiti lokalnu predmemoriju DNS imena na udaljenom sustavu

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