Oddaljeni cmd. Izvajanje ukazov konzole na oddaljenih računalnikih prek omrežja

PsExec je pripomoček za izvedba na daljavo ukazov

Izvajanje ukazov na oddaljenem računalniku je dokaj pogosta naloga. To bo morda potrebno za spreminjanje sistemskih nastavitev, namestitev ali odstranjevanje programov in še veliko več. Za reševanje takšnih težav obstaja kar nekaj različnih orodij, od resnih programskih sistemov, kot je System Center Configuration Manager, do skromnih pripomočkov ukazne vrstice. Eden od teh pripomočkov bo obravnavan v tem članku.

Pripomoček PsExec je del paketa PsTools podjetja Sysinternals. Omogoča vam izvajanje ukazov na oddaljenih računalnikih in ne zahteva namestitve v sistem. Če želite uporabiti pripomoček, ga preprosto kopirajte v mapo z izvedljivimi datotekami (npr. C:\Windows\system32) in ga zaženite iz katere koli lupine ukazne vrstice: Cmd ali PowerShell.
Načelo programa je naslednje: v virih izvedljive datoteke PsExec.exe je še ena izvedljiva datoteka - PSEXESVC, ki je storitev Windows. Pred izvedbo ukaza PsExec ta vir razpakira v skrito skrbniško mapo oddaljenega računalnika Admin$ (C:\Windows), v datoteko C:\Windows\system32\psexesvc.exe.

Opomba.Če uporabljate ključ -c programu povedal, naj kopira izvedljive datoteke v ta sistem, bodo tudi kopirane v to mapo.

Ko je kopiranje končano, PsExec namesti in zažene storitev z uporabo API-ja funkcij Windows za upravljanje storitev. Nato se po zagonu PSEXESVC vzpostavi povezava med njim in PsExec za prenos podatkov (vnos ukazov in prejemanje rezultatov). Po zaključku PsExec ustavi storitev in jo odstrani iz ciljnega računalnika.

Sintaksa za PsExec je naslednja:

psexec \\računalnik [-u uporabnik [-p geslo]] program [argumenti]

Uporabniško ime in geslo lahko izpustite, v tem primeru se bo oddaljeni proces izvajal pod istim računom kot program PsExec. Ker pa je oddaljeni proces lažno predstavljanje, ne bo imel dostopa do omrežnih virov v oddaljenem sistemu. Če podate uporabniško ime, se bo oddaljeni proces začel pod navedenim računom in pridobil dostop do istih omrežnih virov oddaljenega sistema kot dani račun. Vendar ne pozabite, da se geslo oddaljenemu sistemu pošlje v jasnem besedilu.

Kot primer počistimo predpomnilnik dns na oddaljenem računalniku SRV1:

psexec \\SRV1 ipconfig /flushdns

Ukaz se bo zagnal v računalniku SRV1 pod vašimi poverilnicami. Ko se ipconfig zaključi, bo ves izhod besedila poslan na vaš računalnik, poleg tega pa bo vrnjena koda napake. Če je bil ukaz uspešen, bo 0.

Če morate izvesti več ukazov, je bolje, da vzpostavite interaktivno sejo z oddaljenim računalnikom. Če želite to narediti, vnesite ukaz psexec \\SRV1 cmd. Zdaj se bodo ukazi, vneseni na lokalnem računalniku, izvajali na oddaljenem računalniku SRV1.


PsExec vam omogoča, da zaženete ukaz na več računalnikih hkrati. Če želite to narediti, lahko vnesete imena računalnikov, ločena z vejicami: psexec \\SRV1,SRV2 ali jih shranite v besedilno datoteko in nato določite njen naslov: psexec@c:\comp.txt. Če namesto imena računalnika vpišete zvezdico, takole: psexec \\*, potem se bo ukaz izvedel na vseh računalnikih v domeni.


In še en zanimiv način uporabe pripomočka PsExec. Če ne podate imena računalnika, se ukaz privzeto zažene v lokalnem sistemu. Uporaba ključa -s lahko izvajate programe pod sistemskim računom. Na primer, začnimo sejo ukazne vrstice: psexec -s cmd in nato ukaz kdo sem jaz Preverimo, pod katerim uporabnikom trenutno delamo. Ta funkcija je lahko uporabna za odpravljanje napak v programih ali dostop do skritih registrskih ključev SAM in SECURITY.


No, nekaj besed o ključih programa. Ne bom opisoval vsega, povedal vam bom o najbolj zanimivih:

Navedeni program se kopira v oddaljeni sistem za izvedbo. Na primer:

psexec \\SRV1 -c test.exe

Če ta parameter ni nastavljen, se mora aplikacija nahajati v sistemski mapi oddaljenega računalnika. Če tak program že obstaja na oddaljenem računalniku in ni v sistemskem imeniku, morate določiti celotno pot do njega (če ime programa vsebuje presledke, ga morate zajeti v narekovajih):

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

Če skupaj s ključem -c uporabite ključ -f potem tudi če je program že v oddaljenem sistemu, bo prepisan. In s ključem -v prepisan bo le, če je kopirana različica programa novejša od tiste, ki je nameščena v sistemu.

Delovanje programa v interaktivnem načinu. PsExec privzeto izvaja ukaze v prikritem načinu, to pomeni, da v sistemu, kjer se izvaja ukaz, niso prikazana nobena okna ali pogovorna okna. Vendar pa obstaja možnost, da to spremenite s ključem -jaz. Po njem lahko določite številko seje, v kateri naj se prikažejo okna, ali pa je ne morete določiti, potem bo vmesnik prikazan v seji konzole.

Določa, da se ne čaka, da se aplikacija zaključi. V tem primeru ne bomo prejeli izhodnih podatkov od pripomočka za ukazno mizo, vendar bomo lahko zagnali naslednje, ne da bi čakali na dokončanje prejšnjega ukaza. To nastavitev je treba uporabljati samo pri izvajanju neinteraktivnih aplikacij.

Uporablja se za zagon programa v . Morda bo potrebno v operacijski sistemi Windows Vista in novejši za zagon nekaterih programov, ki spreminjajo sistemske nastavitve (na primer regedit).

In s pomočjo tega ključa, nasprotno, lahko znižate avtoriteto. Ko se proces začne, se uporabniku, ne glede na to, ali pripada skupini skrbnikov, dodelijo omejene pravice (pravice skupine "Skrbniki" se prekinejo, uporabniku pa se dodelijo samo pravice, dodeljene skupini "Uporabniki"). .

Dokončano osnovne informacije o vseh ključih programa lahko dobite s preprostim vnosom ukaza psexec v ukazna vrstica brez parametrov.

Pripomočki, kot je Telnet, in programi za oddaljeno upravljanje, kot je Symantecov PC Anywhere, vam omogočajo zagon programov na oddaljenih sistemih, vendar jih ni tako enostavno namestiti, ker morate namestiti tudi odjemalca. programsko opremo na tistih oddaljenih sistemih, do katerih je treba dostopati. PsExec je lahka različica Telneta. Omogoča vam zagon procesov v oddaljenih sistemih s polno močjo vmesnika aplikacije interaktivne konzole, ne da bi vam bilo treba ročno namestiti odjemalsko programsko opremo. Glavna prednost PsExec je zmožnost interaktivnega priklica vmesnika ukazne vrstice na oddaljenih sistemih in oddaljenega zagona orodij, kot je IpConfig. To je edini način za prikaz informacij o oddaljenem sistemu na zaslonu lokalnega računalnika.

Opomba. Nekateri skenerji virusov poročajo, da je eden ali več teh programov okuženih z virusom »oddaljenega skrbnika«. Nobeden od programov, vključenih v zbirko PsTools, ne vsebuje virusov, vendar so jih uporabljali virusi, kar povzroča ta opozorila.

Namestitev

Preprosto kopirajte program PsExec v izvedljivo mapo. Ko vnesete ukaz psexec, se prikaže pomoč o sintaksi ukaza.

PsExec deluje v operacijskih sistemih Windows Vista, NT 4.0, Win2000, Windows XP in Server 2003, vključno s 64-bitnimi različicami OS

Uporaba

Članek Marka Russinovicha v izdaji revije Windows IT Pro Magazine julija 2004 opisuje dodatne metode za delo s programom. psexec.

uporaba: psexec [\\računalnik[,računalnik2[,...] | @datoteka][-u uporabnik [-p geslo]][-n s][-l][-s|-e][-x][-i [seja]][-c [-f|-v]] [-w imenik][-d][-<приоритет>][-a n,n,... ] program [argumenti]

Računalnik

Pove PsExec, naj zažene aplikacijo v določenem računalniku ali računalnikih. Če ime računalnika ni navedeno, bo PsExec zagnal aplikacijo v lokalnem sistemu; če je namesto imena računalnika podan znak zvezdice (\\*), bo PsExec zagnal aplikacijo na vseh računalnikih v trenutni domeni.

@mapa

PsExec pove, naj zažene aplikacijo na vseh računalnikih, navedenih v navedeni besedilni datoteki.

Procesorji, na katerih se lahko izvaja aplikacija, so ločeni z vejicami, procesorji pa so oštevilčeni od 1. Na primer, če želite zagnati aplikacijo na procesorjih dva in štiri, vnesite "-a 2,4"

Navedeni program se kopira v oddaljeni sistem za izvedbo. Če ta parameter ni nastavljen, se mora aplikacija nahajati v sistemski mapi oddaljenega sistema.

Določa, da se ne čaka, da se aplikacija zaključi. To nastavitev je treba uporabljati samo pri izvajanju neinteraktivnih aplikacij.

Navedeni profil računa ni naložen.

Podani program se kopira v oddaljeni sistem, tudi če datoteka že obstaja v oddaljenem sistemu.

Program, ki se izvaja, pridobi dostop do namizja določene seje v oddaljenem sistemu. Če seja ni nastavljena, se proces izvaja v seji ukazne mize.

Ko se postopek zažene, se uporabniku dodelijo omejene pravice (pravice skupine Administratorjev se prekličejo, uporabniku pa se dodelijo samo pravice, dodeljene skupini Uporabniki). V sistemu Windows Vista se postopek začne z nizka stopnja zanesljivost.

Omogoča nastavitev zakasnitve povezave z oddaljenimi računalniki (v sekundah).

Omogoča, da za uporabniško ime določite izbirno geslo. Če je ta parameter izpuščen, boste pozvani, da vnesete geslo, geslo pa ne bo prikazano na zaslonu.

Oddaljeni postopek se izvaja iz sistemskega računa.

Omogoča vam, da določite izbirno uporabniško ime za prijavo v oddaljeni sistem.

Navedena datoteka se kopira v oddaljeni sistem namesto obstoječega le, če je njena številka različice višja ali novejša.

Omogoča vam, da podate delovni imenik (pot znotraj oddaljenega sistema) za proces.

Prikaže uporabniški vmesnik na namizju Winlogon (samo lokalni sistem).

- prednostna naloga(prednostna naloga)

Omogoča vam, da nastavite različne prioritete za proces: -nizko (nizko), -podnormalno (pod povprečjem), -nadnormalno (nadpovprečno), -visoko (visoko) ali -realtime (realni čas).

program

Ime programa za zagon.

argumenti

Argumenti, ki jih je treba prenesti (upoštevajte, da morajo biti poti datotek podane kot lokalne poti v ciljnem sistemu).

Če želite določiti ime aplikacije, ki vsebuje presledke, uporabite narekovaje, kot je psexec \\marklap "c:\longname\app.exe". Vneseni podatki se prenesejo v oddaljeni sistem, ko pritisnete tipko "Enter", za dokončanje oddaljenega postopka morate pritisniti kombinacijo tipk Ctrl-C.

Če uporabniško ime ni navedeno, se oddaljeni proces izvaja pod istim računom kot program PsExec. Ker pa je oddaljeni proces lažno predstavljanje, ne bo imel dostopa do omrežnih virov v oddaljenem sistemu. Če je podano uporabniško ime, se oddaljeni proces izvaja pod navedenim računom in dostopa do istih omrežnih virov v oddaljenem sistemu kot račun. Upoštevajte, da je geslo oddaljenemu sistemu poslano v čistem besedilu.

Pri dostopu do lokalnega sistema lahko to različico PsExec uporabite namesto Runas, ker PsExec ne zahteva skrbniških pravic.

Primeri

Ta ukaz prikliče interaktivni vmesnik ukazne vrstice v sistemu \\marklap:

psexec \\marklap cmd

Ta ukaz zažene program IpConfig na oddaljenem sistemu z možnostjo /all in prikaže nastale podatke na zaslonu lokalnega sistema:

psexec \\marklap ipconfig /all

Ta ukaz kopira program test.exe v oddaljeni sistem in ga interaktivno zažene.

psexec \\marklap -c test.exe

Če je tak program že nameščen v oddaljenem sistemu in ni v sistemskem imeniku, podajte celotno pot do tega programa

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

Ta ukaz interaktivno zažene Regedit iz sistemskega računa za ogled podatkov registrskega ključa SAM in SECURITY:

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

Ta ukaz se uporablja za klic Internetni programi Raziskovalec kot omejen uporabnik:

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

Ta članek obravnava, kako izvajati ukaze ukazne mize na oddaljenih računalnikih v omrežju, kot primeri so podani nekateri zelo uporabni ukazi za sistemske skrbnike.

Uporabljam 2 orodji za izvajanje ukazov na oddaljeni konzoli: PsExec in WinRM, vsako ima svoje prednosti.

psexec

Ena od odličnih rešitev za naslovno težavo je uporaba programa PsExec velikega Marka Russinoviča.

Program deluje po principu odjemalec-strežnik: na lokalnem računalniku teče odjemalec, ki pošilja ukaze strežniku na oddaljenem računalniku. Značilnost tega programa je, da se strežniški del samodejno namesti neposredno pred izvedbo ukaza in nato odstrani. Tako je za izvajanje ukazov na oddaljenih računalnikih dovolj, da imate na njih skrbniške pravice.

Če se PsExec izvaja kot skrbnik, ki pripada isti domeni kot oddaljeni računalnik, potem poverilnice niti niso potrebne. V nasprotnem primeru jih lahko določite v ukazni vrstici ali pa jih bo PsExec pozval. PsExec deluje v operacijskih sistemih od Windows 2000 do 64-bitnega Windows Server 2008 R2.

Naslednje funkcije so zelo uporabne v PsExec:

  • Zaženite ukaz v skupini računalnikov. Primer: naslednji ukaz vam omogoča, da vsilite najnovejše pravilnike skupine:
    psexec @group.txt gpupdate /force
  • Zaženite ukaze kot sistemski račun. Primer: naslednji ukaz bo prisilil oddaljeni sistem, da preveri posodobitve:
    psexec \\računalnik -s wuauclt /detectnow
  • Kopiranje delujočega programa v oddaljeni računalnik pred izvedbo. Primer: naslednji ukaz bo posodobil članstvo tega računalnika v varnostni skupini Active Directory (žeton za dostop) brez ponovnega zagona:
    psexec \\computer -c -s klist.exe čiščenje

Težko je preceniti uporabnost tega programa, če uporabljate skripte in zmogljivosti ukazov konzole, vgrajenih v Windows.

Windows oddaljeno upravljanje

Prvotno je šlo za strežniško tehnologijo za oddaljeno upravljanje strojne opreme, ki je bila uvedena v Windows Server 2003 R2 kot del komponente Hardware Management, vendar je Microsoft pred kratkim izdal paket Windows Management Framework, ki vključuje PowerShell 2.0 in WinRM 2.0 in je nameščen v odjemalskih operacijskih sistemih kot posodobitev. Podrobnosti najdete v članku KB968929.

Lepota WinRM je enostavnost uvajanja v okolje domene prek WSUS kot izbirne nadgradnje OS in moč, ki jo prinaša uporaba PowerShell.

Uporaba WinRM se zgodi z 2 ukazoma.

winrm.cmd se uporablja za konfiguriranje nastavitev in diagnostike za odjemalca in strežnik WinRM.

Da bi strežnik WinRM začel sprejemati ukaze, mora biti zagnana storitev Windows Remote Management in njena začetna konfiguracija. Uporabi ukaz

winrm quickconfig na lokalnem računalniku ali finta z ušesi
psexec -s \\ime strežnika winrm quickconfig prek omrežja z uporabo PsExec kot sistemskega računa.

Pozval vas bo, da samodejno zaženete storitev WinRM in omogočite oddaljene povezave, strinjam se ;)

Če se želite uspešno povezati s strežnikom WinRM (kar pomeni strežniški del, ki sprejema ukaze), ki ni vključen v isto domeno kot vaš odjemalski računalnik, morate ta ciljni strežnik dodati na »seznam zaupanja vrednih« na odjemalcu z naslednjim ukaz:

winrm set winrm/config/client @(TrustedHosts="servername") , kjer lahko namesto imena strežnika podate naslov IP ali * (zvezdica).

Za uporabnike operacijskega sistema Windows Vista in Windows 7, ki ne delujejo kot vgrajeni skrbnik (kar se običajno zgodi), morate zagnati naslednji ukaz

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

Privzeto obstaja omejitev 5 hkratnih povezav WinRM od odjemalca, da povečate to število, zaženite ukaz

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

winrs.exe- odjemalec za pošiljanje zahtev na stran strežnika. Primer: naslednji ukaz bo prisilil ponovni zagon oddaljenega sistema ...

winrs -r:ime strežnika zaustavitev /r /t 0

V okolju domene se pri pošiljanju ukazov uporabljajo poverilnice uporabnika, ki je zagnal ukaz. Za pošiljanje ukazov v imenu drugega uporabnika se uporabljajo stikala -u:user -p:pass. Primer: naslednji ukaz bo počistil lokalni predpomnilnik imen DNS v oddaljenem sistemu

winrs -r:ime strežnika -u:user -p:pass ipconfig /flushdns