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

Ta članek obravnava, kako izvesti ukazi konzole na oddaljenih računalnikih v omrežju je kot primer podanih nekaj zelo uporabnih ukazov za sistemske skrbnike.

Uporabljam 2 orodji za izvajanje ukazov oddaljene konzole: PsExec in WinRM, vsako ima svoje prednosti.

psexec

Ena od odličnih rešitev problema iz naslova je uporaba programa PsExec velikega Marka Russinovicha.

Program deluje po principu odjemalec-strežnik: na lokalnem računalniku deluje odjemalec, ki pošilja ukaze strežniku na oddaljenem računalniku. Značilnost tega programa je, da se strežniški del samodejno namesti tik pred izvedbo ukaza in nato odstrani. Tako je za izvajanje ukazov na oddaljenih strojih 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 je mogoče navesti v ukazna vrstica ali pa jih bo zahteval sam PsExec. 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 prisili oddaljeni sistem, da preveri posodobitve:
    psexec \\računalnik -s wuauclt /detectnow
  • Kopiranje delujočega programa na 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 \\računalnik -c -s čiščenje klist.exe

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

Oddaljeno upravljanje sistema Windows

Prvotno je šlo za strežniško tehnologijo za daljinsko upravljanje strojne opreme, ki je bila predstavljena v sistemu Windows Server 2003 R2 kot del komponente za upravljanje strojne opreme, nedavno pa je Microsoft izdal paket Windows Management Framework, ki vključuje PowerShell 2.0 in WinRM 2.0 in je nameščen na odjemalcu. OS kot posodobitev. Podrobnosti najdete v članku KB968929.

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

Uporaba WinRM poteka prek dveh ukazov.

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

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

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

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

Za uspešno povezavo 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 nastavite winrm/config/client @(TrustedHosts="ime strežnika") , kjer lahko namesto imena strežnika podate naslov IP ali * (zvezdica).

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

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

Privzeto je omejitev 5 hkratnih povezav WinRM od odjemalca, če želite to število povečati, zaženite ukaz

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

winrs.exe- odjemalec za pošiljanje zahtev na strežniško stran. Primer: Naslednji ukaz bo prisilno znova zagnal oddaljeni sistem ...

winrs -r:izklop imenastrežnika /r /t 0

V domenskem okolju 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:uporabnik -p:pass ipconfig /flushdns

Pripomočki, kot je Telnet, in programi za oddaljeno upravljanje, kot je Symantec PC Anywhere, vam omogočajo zagon programov v 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 izvajanje procesov na oddaljenih sistemih s polno močjo vmesnika aplikacije interaktivne konzole brez potrebe po ročni namestitvi odjemalske programske opreme. 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 programi za iskanje virusov poročajo, da je eden ali več teh programov okuženih z virusom "oddaljenega skrbnika". Noben od programov, vključenih v zbirko PsTools, ne vsebuje virusov, vendar so jih uporabili virusi, kar je vzrok za ta opozorila.

Namestitev

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

Zažene se program PsExec operacijski sistemi Windows Vista, NT 4.0, Win2000, Windows XP in Server 2003, vključno s 64-bitnimi različicami OS

Uporaba

Članek Marka Russinovicha v reviji 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 PsExecu, naj zažene aplikacijo na določenem računalniku ali računalnikih. Če ime računalnika ni navedeno, bo PsExec zagnal aplikacijo v lokalnem sistemu; če je ime računalnika zvezdica (\\*), bo PsExec zagnal aplikacijo na vseh računalnikih v trenutni domeni.

@mapa

Pove PsExecu, 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 aplikacijo izvajati na procesorjih dva in štiri, vnesite "-a 2,4"

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

Določa, da se ne čaka na dokončanje aplikacije. To nastavitev je treba uporabiti samo pri izvajanju neinteraktivnih aplikacij.

Naveden profil računa ni naložen.

Navedeni program se prekopira 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 postopek izvaja v seji konzole.

Ko se proces začne, se uporabniku dodelijo omejene pravice (pravice skupine Administratorji se odvzamejo in uporabniku se dodelijo samo pravice, ki so dodeljene skupini Users). 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 vam, da določite neobvezno geslo za uporabniško ime. Če ta parameter izpustite, boste pozvani k vnosu gesla in geslo ne bo prikazano na zaslonu.

Oddaljeni proces se izvaja iz sistemskega računa.

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

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

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

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

- prednostna naloga(prioriteta)

Omogoča nastavitev različnih prioritet za proces: -low (nizko), -belownormal (pod povprečjem), -abovenormal (nad povprečjem), -high (visoko) ali -realtime (realnem času).

program

Ime programa za zagon.

argumenti

Argumenti za posredovanje (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 poslano v oddaljeni sistem v obliki čistega besedila.

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 v oddaljenem sistemu z možnostjo /all in prikaže dobljene podatke na zaslonu lokalnega sistema:

psexec \\marklap ipconfig /all

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

psexec \\marklap -c test.exe

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

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

Ta ukaz interaktivno zažene Regedit iz sistemskega računa za ogled podatkov registrskih ključev 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"

PsExec - pripomoček za oddaljeno izvajanje ukazov

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

Pripomoček PsExec je del paketa PsTools družbe 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 izvršljivimi datotekami (npr. C:\Windows\system32) in ga zaženite iz poljubne lupine ukazne vrstice: Cmd ali PowerShell.
Načelo delovanja programa je naslednje: v virih izvedljive datoteke PsExec.exe je še ena izvršljiva datoteka - PSEXESVC, ki je Storitev Windows. Preden izvede ukaz, PsExec razpakira ta vir v skrito skrbniško mapo oddaljenega računalnika Admin$ (C:\Windows), v datoteko C:\Windows\system32\psexesvc.exe.

Opomba.Če uporabljate ključ -cče programu naročite, naj kopira izvedljive datoteke v ta sistem, bodo prav tako kopirane v to mapo.

Ko je kopija končana, PsExec namesti in zažene storitev z uporabo Windows Functions API 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 ta račun. Vendar ne pozabite, da je geslo poslano v oddaljeni sistem v obliki čistega besedila.

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

psexec \\SRV1 ipconfig /flushdns

Ukaz bo zagnan na računalniku SRV1 pod vašimi poverilnicami. Ko se ipconfig konča, bo ves izhod besedila poslan v vaš računalnik in vrnjena bo koda napake. Če je bil ukaz uspešen, bo 0.

Če morate izvesti več ukazov, je bolje vzpostaviti 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 omogoča zagon ukaza 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 vstavite zvezdico, takole: psexec \\*, potem bo ukaz izveden na vseh računalnikih v domeni.


In še ena zanimiv način z uporabo pripomočka PsExec. Če ne podate imena računalnika, se ukaz privzeto izvaja v lokalnem sistemu. Uporaba ključa -s lahko izvajate programe pod sistemskim računom. Na primer, zaženimo 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 opisal vsega, povedal vam bom o najbolj zanimivih:

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

psexec \\SRV1 -c test.exe

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

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

Če skupaj s ključem -c uporabite ključ -f 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, kar pomeni, da v sistemu, kjer se izvede ukaz, niso prikazana okna ali pogovorna okna. Obstaja pa možnost, da to spremenite s ključem -jaz. Po tem lahko določite številko seje, v kateri želite prikazati okna, ali pa je ne določite, potem bo vmesnik prikazan v seji konzole.

Določa, da se ne čaka na dokončanje aplikacije. V tem primeru ne bomo prejeli izhodnih podatkov iz pripomočka konzole, vendar bomo lahko zagnali naslednje, ne da bi čakali na dokončanje prejšnjega ukaza. To nastavitev je treba uporabiti samo pri izvajanju neinteraktivnih aplikacij.

Uporablja se za izvajanje programa v . V operacijskih sistemih Windows Vista in novejših je morda potreben 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 postopek začne, dobi uporabnik, ne glede na to, ali pripada skupini Skrbniki, omejene pravice (pravice skupine "Skrbniki" se razveljavijo, uporabniku pa se dodelijo le pravice, dodeljene skupini "Uporabniki") .

Popolna osnovne informacije o vseh ključih programa lahko dobite s preprostim vnosom ukaza psexec v ukazni vrstici brez parametrov.