Pokrenite Remote Desktop. Pristup udaljenoj radnoj površini

Postojao je zadatak izvršiti neku operaciju koristeći komandna linija na drugom računaru, naravno, idite do korisnika da pokrene komandnu liniju i unese komande - nije naša metoda, moramo pokrenuti komandnu liniju udaljenog računara bez ustajanja sa stolice i izvršiti potrebne radnje na komandi linija. Naravno, takva radnja se može izvesti pomoću programa za daljinsko povezivanje, ali to nije uvijek zgodno i zahtijeva da vi i korisnik (klijent-server) imate sličan program. Procedura za povezivanje na komandnu liniju drugog računara može se izvršiti mnogo jednostavnije korišćenjem komande PSEXEC.

psexec je uslužni program komandne linije sa mogućnošću interaktivnog pozivanja interfejsa komandne linije na udaljenim Windows sistemima i daljinskog pokretanja raznih komandi.

Ovaj uslužni program je instaliran samo na administratorskom računaru. Da biste ga instalirali, morate ga preuzeti, evo linka do Microsoft službena stranica . Nakon preuzimanja arhive, trebate je raspakirati, pronaći datoteku PsExec.exe u raspakiranoj mapi. Kliknite na njega dvaput, pojavit će se prozor s ugovorom o licenci, kliknite " Slažem se".

Analizirajmo sintaksu naredbe:

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 Govori PsExec-u da pokrene aplikaciju na svim računarima navedenim u navedenoj tekstualnoj datoteci.

-a 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"

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

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

-e Navedeni profil naloga nije učitan.

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

-i Program koji se pokreće dobija pristup radnoj površini navedene sesije na udaljenom sistemu. Ako sesija nije postavljena, tada se proces izvodi u sesiji konzole.

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

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

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

-s Udaljeni proces se pokreće sa sistemskog naloga.

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

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

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

-x 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).

Primjeri timskog rada PSEXEC:

1) Da biste pokrenuli komandnu liniju drugog računara, morate ući
psexec \\<имя компьюетра>cmd

Na primjer:
psexec \\WIN782 cmd



nakon toga možete unijeti komande koje su vam potrebne.

2) Da biste pokrenuli program (test.exe u ovom primeru) na udaljenom računaru, potrebno je da izvršite naredbu (ova komanda kopira program test.exe na udaljeni sistem i izvršava ga interaktivno).

psexec \\<имя компьютера>-c test.exe

Na primjer:
psexec \\WIN782-c test.exe

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

psexec \\WIN782 c:\temp\test.exe

U prethodnim verzijama servera Windows-a, administrator je morao da koristi terminalske usluge za daljinsko upravljanje serverom. Nedostatak ovog rješenja bila je potreba za implementacijom terminalskih usluga čak i kada je administratoru bila potrebna samo jedna udaljena veza za obavljanje rutinskih administrativnih zadataka. Windows XP i Windows Server 2003 imaju standardni mehanizam Remote Desktop za administraciju, ili jednostavno Remote Desktop, koji vam omogućava da se povežete na daljinu i izvršite potrebne operacije za upravljanje serverom. Ovaj mehanizam je baziran na terminalskim uslugama i podržava dvije istovremene udaljene veze (u Windows XP - jednu). Administrator može da administrira sve servere koji rade pod Windows Server 2003 sa bilo koje radne stanice tako što će se povezati sa njima na daljinu.

Bilješka
Mehanizam udaljene radne površine za administraciju nije u suštini isti kao način udaljene administracije koji podržavaju terminalske usluge Windows 2000. U Windows Serveru 2003, zadatak udaljene administracije je odvojen od terminalskih usluga i implementiran kao poseban mehanizam. Odvajanje mehanizma udaljene administracije od terminalskih usluga omogućilo je smanjenje opterećenja na serveru na minimum u situaciji kada je potrebno samo da upravljate serverom sa drugog računara.

Windows XP i Windows Server 2003 takođe imaju funkciju daljinske pomoći koja omogućava korisniku da započne pristup svom računaru i dobije pomoć u teškim situacijama (pogledajte sledeći odeljak).

Bilješka
Podrazumevano, funkcije udaljene radne površine i daljinske pomoći su onemogućene.

Osim toga, ako je web server instaliran na računar koji radi pod operativnim sistemom Windows XP ili Windows Server 2003 kao dio Internet Information Services (IIS), tada preko tog računara možete daljinski pristupiti bilo kojem Windows XP ili Windows Server 2003 sistemu koji je u iste lokalne mreže, iz web pretraživača (Internet Explorer 4.0 i novije verzije) koji radi na bilo kojem operativnom sistemu. Ova funkcija omogućava, na primjer, na računaru niske potrošnje koji pokreće Windows 95 da pokrene pretraživač i, unošenjem imena udaljenog Windows Server 2003 sistema zasnovanog na nekom moćnom procesoru, radi na njemu u režim preko celog ekrana.
Sve sesije udaljenog pristupa su šifrirane kako bi se spriječio neovlašteni pristup podacima i sistemima: korišteni RDP protokol je šifriran korištenjem RC4 algoritma.

Dozvola za daljinski pristup

Da biste kontrolisali režim udaljenog pristupa (nemojte ga brkati sa udaljenim pristupom putem dial-up veze!) Koristite karticu Remote (Daljinsko korišćenje) prozora System Properties (Slika 10.9). (Da biste brzo pristupili ovom prozoru, možete koristiti tipke +.)
Da biste omogućili korisnicima sa drugih računara da pristupe vašem sistemu, potvrdite izbor u polju za potvrdu Dozvoli korisnicima da se daljinski povežu na ovaj računar. Klikom na dugme Select Remote Users možete eksplicitno odrediti kojim korisnicima je dozvoljen daljinski pristup (slika 10.10): ovi korisnici će biti uključeni u lokalnu grupu korisnika udaljene radne površine. Podrazumevano, samo administratori imaju daljinski pristup računaru.
Ne možete koristiti naloge bez lozinke za daljinski pristup. Ako na računaru postoje takvi unosi, onda kada označite polje za potvrdu Dozvoli korisnicima da se daljinski povežu na ovaj računar, pojaviće se upozorenje, kao što je prikazano na Sl. 10.11.

Rice. 10.9. Kontrolni prozor udaljene radne površine i daljinske pomoći

Rice. 10.10. Korisnicima navedenim u ovom prozoru biće dozvoljen daljinski pristup radnoj površini računara


Rice. 10.11. Podsjetnik da se nalozi bez lozinke ne mogu koristiti za daljinski pristup računaru

Uslužni program za vezu sa udaljenom radnom površinom koristi se za inicijalizaciju sesije udaljenog pristupa (pokreće se iz podmenija Start | Svi programi | Pribor | Komunikacije ili pomoću komande mstsc iz komandne linije). Unesite ime ili IP adresu udaljenog računara i kliknite na dugme Poveži (Slika 10.12) - i za nekoliko trenutaka videćete prozor koji vas poziva da se prijavite na udaljeni sistem!

Pažnja

Rice. 10.11. Podsjetnik da se nalozi bez lozinke ne mogu koristiti za daljinski pristup računaru

Pokretanje i konfiguriranje sesije udaljenog pristupa

Uslužni program za vezu sa udaljenom radnom površinom koristi se za inicijalizaciju sesije udaljenog pristupa (pokreće se iz podmenija Start | Svi programi | Pribor | Komunikacije ili pomoću komande mstsc iz komandne linije). Unesite ime ili IP adresu udaljenog računara i kliknite na dugme Poveži (Slika 10.12) - i za nekoliko trenutaka videćete prozor koji vas poziva da se prijavite na udaljeni sistem!



Rice. 10.12. Iz ovog prozora možete pokrenuti sesiju sa udaljenim računarom

Pažnja

Na Windows XP sistemima, prijavljivanje pomoću udaljene radne površine "izbacuje" trenutnog korisnika iz sistema bez zatvaranja trenutne sesije. Ako se udaljeni korisnik prijavi sa imenom već registrovanog korisnika, tada dobija radno okruženje - otvorene prozore, pokretanje programa - ovog korisnika, koji se zauzvrat može ponovo prijaviti i izbaciti "vanzemaljaca". Samo kada se koristi daljinska pomoć, moguće je da dva korisnika rade u istoj sesiji u isto vrijeme. Ovo se ne dešava u Windows Serveru 2003 jer dozvoljavaju dvije sesije za udaljenu administraciju. Međutim, ako koristite komandu mstsc /console, možete dobiti isti način rada kao u Windows XP-u - to jest, sa "push".
U prozoru Veza sa udaljenom radnom površinom kliknite na dugme Opcije i pažljivo pregledajte sve kartice koje definišu opcije daljinskog povezivanja. Možete, na primjer, postaviti veličinu ekrana, dubinu boje (do 24 bita), brzinu veze, itd. Obratite pažnju na karticu Lokalni resursi (slika 10.13).

Rice. 10.13. Kartica koja kontrolira preraspodjelu lokalnih uređaja

Podrazumevano, zvuk sa udaljenog računara se preusmerava na lokalni računar i možete da štampate na lokalnom štampaču dok radite na udaljenom računaru. Ako potvrdite izbor u polju za potvrdu Disk drives, možete koristiti diskove oba sistema u isto vrijeme. Ovo je vrlo zgodno, na primjer, za kopiranje datoteka: "pokretom zgloba" u prozoru Windows Explorera (gdje će biti prikazani diskovi oba računara), možete kopirati bilo koju informaciju sa udaljenog računara na vaš lokalni disk .
Kartica Iskustvo (Slika 10.14) vam omogućava da prilagodite sesiju udaljenog pristupa parametrima veze: možete onemogućiti neke grafičke karakteristike za kanale male brzine i omogućiti sve funkcije kada ste povezani preko lokalne mreže.

Rice. 10.14. Konfiguriranje parametara udaljenog pristupa ovisno o brzini komunikacijskog kanala

Da biste prebacili prozor sesije sa celog ekrana na ekran fiksne veličine i obrnuto, koristite tastere ++

Windows Server 2003 sistemi koriste dodatak za udaljene radne površine za pristup terminalskim uslugama. Može se koristiti i za daljinski pristup računarima. Na sl. Slika 10.15 prikazuje primjer povezivanja na dva udaljena računara (udaljeni server i kontroler domene) u isto vrijeme. Svaka sesija je unapred kreirana i konfigurisana (pogledajte Snap-In Root i Stablo sesija sa udaljenim pristupom), nakon čega se može lako pokrenuti pokazivanjem na kursor na listi. Također možete lako prelaziti između različitih sesija.


Rice. 10.15. Prozor za proširenje udaljene radne površine sa dvije simultane sesije udaljenog pristupa

Izlazak iz sesije

Kada radi u sesiji udaljenog pristupa računaru, administrator ima tri opcije da prekine sesiju (u svakom slučaju mora otvoriti Start meni (Start) i kliknuti na dugme Shut Down (Kraj rada)):

  • možete isključiti računar odabirom opcije Shut down u prozoru Shut Down Windows;
  • možete se odjaviti sa sistema odabirom opcije Odjava;
  • možete prekinuti trenutnu sesiju odabirom opcije Disconnect - u ovom slučaju, prilikom ponovnog povezivanja sa ovim računarom sa prethodno korišćenim imenom, administrator će dobiti isto radno okruženje (otvoreni prozori i pokrenuti programi) koje je "ostavio" prilikom isključivanja sa sednici.

Daljinski pristup preko interneta

Da pristupite svom računaru preko Interneta, unesite http:// u polje za adresu vašeg pretraživača.<имя_cepвepa>/TSWeb , gdje je ime_servera DNS ime web servera (računara sa instaliranim IIS-om) ili njegova IP adresa.


Rice. 10.16. Prozor internetske veze udaljeni računar

Nakon povezivanja sa serverom, pojaviće se veb stranica Remote Desktop Web Connection (slika 10.16), gde u polju Server morate navesti ime ili adresu računara na koji želite da se povežete, a zatim kliknite na dugme Poveži. Imajte na umu da se nazivi web servera i ciljnog računara mogu razlikovati: tj. "prijavljujete se" na mrežu preko jednog računara, ali se povezujete na bilo koji drugi.

Pažnja
Da bi opisani način rada radio, komponenta Veb veze sa udaljenom radnom površinom mora biti instalirana na serveru kao dio usluge WWW (World Wide Web Service).

Kada prvi put slijedite ovu proceduru, server će preuzeti ActiveX komponentu koju trebate instalirati na vaš lokalni računar. Njegov prozor je prikazan na sl. 10.17. Kliknite na dugme Da.


Rice. 10.17. Upozorenje o instaliranju ActiveX komponente na lokalni računar

Nakon toga se uspostavlja veza sa odabranim (ciljanim) računarom i pojavljuje se tradicionalni prozor za registraciju. Na sl. 10.18, na primjer, prikazan je prozor pretraživača Internet Explorer-a koji prikazuje sesiju na udaljenom računaru. Napominjemo da se u adresnom prozoru prikazuje IP adresa jednog računara (preko kojeg smo ušli u mrežu), a veza se ostvaruje sa drugim računarom - njegova adresa je naznačena na dnu ekrana. Podsjetimo da se takva slika može dobiti u bilo kojem operativnom sistemu na kojem je instaliran Internet Explorer verzije 4.0 i novije. U režimu preko celog ekrana, paneli pretraživača se uopšte ne prikazuju, a videćemo samo radnu površinu udaljenog računara.

Rice. 10.17. Upozorenje o instaliranju ActiveX komponente na lokalni računar

Nakon toga se uspostavlja veza sa odabranim (ciljanim) računarom i pojavljuje se tradicionalni prozor za registraciju. Na sl. 10.18, na primjer, prikazan je prozor pretraživača Internet Explorer-a koji prikazuje sesiju na udaljenom računaru. Napominjemo da se u adresnom prozoru prikazuje IP adresa jednog računara (preko kojeg smo ušli u mrežu), a veza se ostvaruje sa drugim računarom - njegova adresa je naznačena na dnu ekrana. Podsjetimo da se takva slika može dobiti u bilo kojem operativnom sistemu na kojem je instaliran Internet Explorer verzije 4.0 i novije. U režimu preko celog ekrana, paneli pretraživača se uopšte ne prikazuju, a videćemo samo radnu površinu udaljenog računara.



Jedan od najpopularnijih zadataka sistemskih administratora je pokretanje komande na udaljenom računaru.Ovo može biti potrebno za instaliranje nekog programa ili uslužnog programa, promenu postavki itd. Retko govorimo samo o jednom računaru, češće je potrebna komanda pokrenuti na više radnih stanica ili servera.

Budući da je ovaj problem popularan, postoji mnogo načina za njegovo rješavanje. Počevši od grupnih politika (u kojima možete koristiti skripte za prijavu ili pokretanje za ovu svrhu) i završavajući sa moćni sistemi upravljanje, kao što je System Center Essentials ili System Center Configuration Manager. Ali u ovom članku želim razmotriti metode koje su dostupne odmah iz komandne linije ili datoteka skripte, a također ne zahtijevaju pre-instalaciju agenata i drugu gužvu. Međutim, naravno postoje neki preduslovi. Na primjer, morate imati administrativne privilegije na računaru na kojem želite da pokrenete naredbu (osim za "proxy" scenario, ali o tome kasnije).

Jedan od mojih omiljenih načina da izvršim ovaj zadatak je uslužni program komandne linije PsExec.exe koji je napisao Mark Russinovich, a koji možete besplatno preuzeti sa web stranice Windows SysInternals. Link do njega možete pronaći na kraju članka. Ne zahtijeva instalaciju na sistemu, možete ga jednostavno kopirati u jednu od mapa sadržanih u varijabli okruženja %path% i pozvati je iz bilo koje ljuske komandne linije: Cmd ili PowerShell.

Korištenje PsExec-a je vrlo jednostavno. Na primjer, da pokrenete ipconfig /flushdns na glavnoj mašini, samo pokrenite sljedeću naredbu:

psexec \\main ipconfig /flushdns

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

Naravno, mogućnosti PsExec-a se tu ne završavaju. Pozivanjem uslužnog programa bez parametara, možete vidjeti druge dostupne opcije. Fokusiraću se na samo neke od njih.

Prekidač -d govori PsExec-u da nije potrebno čekati da se naredba izvrši, već je samo pokrenite i zaboravite. U ovom slučaju, nećemo primiti izlazne podatke od uslužnog programa konzole, ali ćemo moći pokrenuti druge bez čekanja da se prethodna naredba završi. Ovo je vrlo korisno ako trebate pokrenuti, na primjer, program za instalaciju na više računara.

Podrazumevano, PsExec izvršava komande u skrivenom režimu, to jest, nikakvi prozori ili dijalozi neće biti prikazani na sistemu gde se komanda izvršava. Međutim, moguće je promijeniti ovo ponašanje pomoću opcije -i. Nakon toga možete odrediti broj sesije u kojoj će se prikazati prozori, ili ga ne možete odrediti, tada će se interfejs prikazati u sesiji konzole.

Da bi se otvorio prozor sa informacijama o verziji operativni sistem na glavnoj mašini, trebalo bi da pokrenete PsExec ovako:

psexec -i \\main winver.exe

Ako želite da izvršite naredbu na nekoliko računara odjednom, biće vam potrebna mogućnost da pročitate njihova imena iz tekstualne datoteke liste.

psexec @c:\comps.txt systeminfo.exe

Pa, jedna od najkorisnijih karakteristika PsExec-a je mogućnost interaktivnog preusmjeravanja ulaza/izlaza između računala, što nam omogućava da pokrenemo, na primjer, cmd.exe na udaljenom serveru, i dajemo mu komande i dobijemo rezultate na lokalnom kompjuter.

Kako Psexec funkcionira?

Sve genijalno je jednostavno. Resursi izvršne datoteke PsExec.exe uključuju drugu izvršnu datoteku, PSEXESVC, koja je Windows usluga. Prije izvršavanja naredbe, PsExec raspakuje ovaj resurs u skriveni administrativni zajednički folder na udaljenom računaru, u datoteku: \\ComputerName\Admin$\system32\psexesvc.exe. Ako ste prekidačem -c označili da želite da kopirate izvršne datoteke na ovaj sistem, one će također biti kopirane u ovaj folder.

Kada se pripremni koraci završe, PsExec instalira i pokreće uslugu koristeći Windows API-je za upravljanje uslugama. Nakon što se PSEXESVC pokrene, kreira se nekoliko kanala između njega i PsExec za prijenos podataka (ulazne komande, rezultati, itd.). Kada se završi, PsExec zaustavlja uslugu i uklanja je sa ciljnog računara.

Windows upravljačka instrumentacija (WMI)

Sljedeći način za implementaciju ovog popularnog zadatka o kojem želim govoriti je korištenje Windows Management Instrumentation. WMI je prisutan u svim Microsoft operativnim sistemima od Windows 2000, a čak i na Windows 9x može se instalirati iz zasebnog paketa. WMI je podrazumevano omogućen i ne zahteva nikakvu dodatnu konfiguraciju. Da biste ga koristili, dovoljna su administrativna prava i DCOM protokol je dozvoljen na firewall-u. WMI pruža mnoštvo opcija za upravljanje sistemima, ali nas trenutno zanima samo jedna od njih.

Za pokretanje procesa potrebna nam je metoda Create klase Win32_Process. Dovoljno je jednostavan za korištenje. U PowerShell-u se to radi ovako:

$Computer = "glavni"
$Command = "cmd.exe /c systeminfo.exe >
("\\$Computer\root\cimv2:Win32_Process").kreiraj ($Command)

Ovdje sam naveo cmd.exe kao proces koji treba pokrenuti i već sam ga proslijedio kao argumente željenu naredbu. Ovo je neophodno u slučaju da trebate da koristite varijable okruženja udaljenog računara ili ugrađene naredbe cmd.exe kao što je ">" da biste preusmjerili izlaz na datoteku. Metoda Create ne čeka da se proces završi i ne vraća nikakve rezultate, već nam umjesto toga govori svoj ID - ProcessID.

Ako koristite računar na kome još uvek nije instaliran PowerShell, možete takođe pozvati ovu WMI metodu iz VBScript skripte. Na primjer ovako:

Listing #1 - Pokretanje procesa koristeći WMI (VBScript)

Computer="PC3"
Naredba = "cmd.exe /c systeminfo.exe > \\server\share\%computername%.txt"
Postavite objWMIService = GetObject("winmgmts:\" & Računar & "\root\cimv2:Win32_Process")
Rezultat = objWMIService.Create("calc.exe", Null, Null, intProcessID)

Ali mnogo je lakše koristiti uslužni program komandne linije wmic.exe, koji pruža prilično zgodan interfejs za rad sa WMI-jem i uključen je u operativne sisteme počevši od Windows XP-a. U njemu, da biste pokrenuli, na primjer, kalkulator na glavnom računaru, samo pokrenite sljedeću naredbu:

wmic /node:main process call create calc.exe

Naravno, mogućnosti WMI-a nisu ograničene samo na pokretanje procesa. Ako ste zainteresovani da saznate više o ovoj tehnologiji, preporučujem vam da pročitate članke Konstantina Leontijeva o WMI-u, veze do kojih možete pronaći na kraju članka.

WSH Remote Scripting

Da, koliko je čudno, Windows Script Host takođe ima mogućnost pokretanja skripti na drugim računarima. Istina, ova funkcija nije dobila veliku popularnost, a najvjerovatnije zbog činjenice da zahtijeva previše pripremnih aktivnosti, a zauzvrat pruža vrlo malo mogućnosti. Ali svejedno ću govoriti o ovoj metodi, jer može biti od koristi.

Dakle, da bismo pokrenuli skriptu na drugom računaru koristeći WSH, moramo uraditi sljedeće:

Administratorska prava na udaljenom računaru. Ovo se podrazumijeva i potrebno je za gotovo sve druge metode pokretanja navedene u ovom članku. Omogućite WSH Remote Scripting postavljanjem vrijednosti Remote stringa na "1" u sistemskom registru u ključu registra HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings wscript –regserver naredba Ako se firewall koristi na računarima, onda mora dozvoliti pristup na DCOM. Štaviše, to se mora uraditi ne samo na upravljanom računaru, već i na onom sa kojeg želite da pokrenete skriptu. Na Windows XP sistemima sa servisnim paketom 2 i novijim, morate promijeniti sigurnosne postavke DCOM-a. To se može učiniti pomoću grupnih politika. Pod Konfiguracija računara \ Windows postavke \ Sigurnosne postavke \ Lokalne politike \ Sigurnosne opcije, postavite dozvole na sljedeći način: DCOM: Ograničenja pristupa stroju u sintaksi jezika definicije sigurnosnih deskriptora (SDDL)
Dodijelite anonimnu prijavu i svi grupišu dozvole Dozvoli lokalni i Dozvoli udaljeni pristup DCOM: Ograničenja pokretanja mašine u sintaksi jezika definicije sigurnosnih deskriptora (SDDL)
Dajte administratorskoj grupi dozvole Dozvoli lokalno pokretanje, Dozvoli udaljeno pokretanje, Dozvoli lokalnu aktivaciju, Dozvoli udaljenu aktivaciju
Grupa Svi - Dozvoli lokalno pokretanje, Dozvoli lokalnu aktivaciju

Pa, nakon svih ovih procedura, možete pokušati da pokrenete svoju skriptu na drugom računaru.

Primjer skripte koja koristi ovu tehnologiju:

Listing #2 - WSH udaljeno skriptiranje (VBScript)

Postavite objController = CreateObject("WshController")
Postavite objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "remote_"
objRemoteScript.Execute
Uradi Dok objRemoteScript.Status 1
WScript.Sleep 1000
petlja
MsgBox "Skripta je završena"
Sub remote_Error
Dim objError
Postavite objError = objRemoteScript.Error
WScript.Echo "Error - Line: " & objError.Line & _
", Char: " & objError.Character & vbCrLf & _
"Opis: " & objError.Description
WScript Quit -1
end sub

U njegovom drugom redu, kao parametri za funkciju CreateScript, naznačena je putanja do datoteke skripte koja će se izvršiti na udaljenom računaru i stvarno ime ovog računara.

Planer zadataka

Planer zadataka se može kontrolisati iz komandne linije pomoću dva uslužna programa - at.exe i schtasks.exe. Oba ova uslužna programa vam omogućavaju da navedete ime udaljenog računara za kreiranje posla i stoga vam omogućavaju da riješite naš problem. Ali detaljno ćemo razmotriti samo schtasks.exe, jer pruža mnogo više funkcija.

Iako izvršavanje komandi na drugim računarima nije glavna svrha planera, ipak vam omogućava implementaciju mnogih zanimljivih scenarija. Na primjer, može se koristiti za omogućavanje instalacije softvera tokom pauze za ručak. Ili ako vaši korisnici večeraju u drugačije vrijeme, pokretanje se može izvršiti nakon određenog perioda neaktivnosti računara.

schtasks /create /s server6.td.local /tn install /tr \\main\data\install.cmd /sc jednom /st 13:00 /ru sistem

Važno je razumjeti u ime kog računa će se zadatak izvršiti. U ovom primjeru sam specificirao parametar /ru za sistemsku vrijednost, stoga, da biste dovršili instalaciju računa računala, trebat će vam pristup za čitanje mrežne mape s kompletom za distribuciju programa.

Još jedno korisno rješenje, čini mi se, je da se zakaže neka radnja za svakodnevno izvršavanje, a zadatak briše tek kada se potvrdi njegov uspjeh. To jest, možete kreirati jednostavnu batch datoteku koja prvo pokreće instalater programa, čeka da se završi i provjerava da li je program uspješno instaliran. Ako je tako, uklanja zadatak iz planera na tom računaru. Primjer takvog fajla:

Listing #3 - Instaliranje programa i zatim brisanje posla (Windows Batch)

msiexec /qn /package \\server\share\subinacl.msi
ako postoji "c:\program files\Windows Resource Kits\Tools\subinacl.exe" (
subinacl /tn Install_Subinacl /f
)

WinRM (WS Management)

WinRM je Microsoftova implementacija otvorenog standarda DMTF (Distributed Management Task Force) koji omogućava upravljanje sistemima pomoću web usluga. Neću se upuštati u uređaj tehnologije, već ću samo ukratko opisati šta je potrebno za njenu upotrebu.

WinRM verzija 1 i novije su uključene u operativne sisteme počevši od Windows Vista i Windows Server 2008. Za Windows XP i Windows Server 2003, WinRM možete instalirati kao poseban paket (pogledajte veze).

Da biste brzo konfigurisali računar za povezivanje sa njim koristeći standardne portove i omogućili povezivanje sa administrativnim nalozima, samo pokrenite naredbu:

winrm quickconfig

Da spriječite winrm da traži potvrdu, pozivu možete dodati prekidač -quiet. Za više informacija o finom podešavanju pogledajte ugrađenu pomoć za winrm:

winrm help config

Ako upravljani računar koristi web server, WinRM ga ni na koji način neće ometati, iako koristi standardne HTTP portove prema zadanim postavkama. Presreće samo veze namijenjene posebno za to.

Naravno, ne morate ručno da pokrećete ovu naredbu na svakom računaru kojim želite da upravljate. Sva potrebna podešavanja mogu se lako izvršiti pomoću grupnih politika. Za ovo vam je potrebno:

Konfigurišite uslugu WinRM (Windows Remote Management) za automatsko pokretanje Konfigurišite konfiguraciju računara \ Administrativni predlošci \ Windows komponente \ Windows daljinsko upravljanje (WinRM) \ WinRM usluga \ Dozvolite automatsku konfiguraciju GPO stavke slušalaca. Ovdje morate navesti opsege IP adresa sa kojih su veze dozvoljene. Naravno, takođe ćete morati da dozvolite veze na odgovarajućim portovima (80 podrazumevano) u Windows zaštitnom zidu.

Bez obzira da li se koristi HTTP (80) ili HTTPS (443) port, saobraćaj koji WinRM prenosi je šifrovan (osim ako ne onemogućite ovu opciju, naravno). Zadani protokol provjere autentičnosti je Kerberos.

Ali dosta o postavkama, bolje je ići direktno na korištenje. Iako vam uslužni program winrm omogućava konfigurisanje WinRM usluge, kao i izvršavanje WMI upita, na primjer, više nas zanima još jedan - winrs. Slova RS ovdje znače Remote Shell. WinRS radi vrlo slično PsExec-u, iako koristi WinRM tehnologiju. Ime računara je navedeno pomoću prekidača -r, nakon čega slijedi naredba koju treba izvršiti. Evo nekoliko primjera:

winrs -r:Core ver.exe

Pošto winrs već koristi cmd.exe kao udaljenu ljusku, možete lako pristupiti varijablama udaljenog okruženja u naredbama ili koristiti druge ugrađene cmd.exe komande:

winrs -r:Core "dir c:\temp > c:\temp\list.txt"

Kao i PsExec, uslužni program winrs vam omogućava da otvorite interaktivnu sesiju na udaljenom računaru:

winrs -r:main cmd.exe

Ova funkcija je slična telnet sesiji, ali korištenje winrs-a je definitivno bolje od telneta, pa čak i PsExec-a, sa sigurnosne tačke gledišta. Bez obzira da li se koristi HTTP (80) ili HTTPS (443) port, saobraćaj koji WinRM prenosi je šifrovan (osim ako ne onemogućite ovu opciju, naravno). Zadani protokol provjere autentičnosti je Kerberos.

Windows PowerShell 2.0 daljinsko upravljanje

Iako je druga verzija Windows PowerShell-a još uvijek u beta testiranju u vrijeme pisanja, o njenim mogućnostima na terenu daljinsko izvršenje o timovima definitivno vrijedi razgovarati upravo sada. Možete ga isprobati sami ili preuzimanjem verzije za pregled (pogledajte veze) ili kao dio beta verzije Windows 7 ili Windows Server 2008 R2.

PowerShell Remoting infrastruktura je bazirana na WinRM verziji 2.0, te stoga nasljeđuje sve prednosti ove tehnologije, kao što je šifriranje prenesenih podataka i mogućnost rada na standardnim HTTP/HTTPS portovima. Ali zahvaljujući bogatstvu Windows PowerShell jezika i njegovoj sposobnosti da radi sa objektima, dobijamo još više mogućnosti. Na ovog trenutka WinRM2.0 je takođe u beta verziji i dostupan je samo za preuzimanje na sistemima Windows Vista i Windows 2008. Biće ugrađen u Windows 7 i Windows Server 2008R2 sisteme iz kutije, zajedno sa PowerShell 2.0.

Ažuriranje: U vrijeme kada je članak objavljen na ItBand.ru, konačne verzije PowerShell 2.0 i WinRM 2.0 su već bile dostupne za sve podržane platforme. Oni su već uključeni u Windows Server 2008R2 i Windows 7 kao sastavne komponente sistema, a za Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 sve potrebne komponente se mogu nabaviti kao paket pod nazivom Windows Management Framework.

Prije nego što možete u potpunosti iskoristiti ove prednosti, PowerShell Remoting mora biti omogućen i na menadžerskim i na upravljanim računarima. Ovo je lako učiniti pokretanjem cmdleta (Windows PowerShell komanda) Enable-PSRemoting. Štaviše, ako dodate -Force ključ, tada se neće tražiti potvrda. Ovaj cmdlet će pozvati winrs quickconfig ako je potrebno i kreirat će izuzetke u Windows zaštitnom zidu, tako da nisu potrebne daljnje radnje.

Zatim možete lako izvršiti naredbe na drugim računarima koristeći Invoke-Command cmdlet (ili njegov pseudonim icm):

Invoke-Command -ComputerName Main -ScriptBlock (netsh sučelje dump > c:\ipconfig.txt)

Naravno, komanda se može unapred staviti u promenljivu, a za parametar -ComputerName navesti imena ne jednog, već nekoliko računara odjednom. Sljedeća sekvenca vam omogućava da prikažete verziju datoteke Explorer.exe sa tri računara odjednom.

$Command = ((get-item c:\Windows\explorer.exe).VersionInfo.FileVersion)
Invoke-Command -ComputerName Main, Server7, Replica -ScriptBlock $Command

Kao što vidite, možete proslediti nekoliko komandi odjednom u jednom bloku, staviti njihove rezultate izvršenja na nekoliko računara u varijablu, a zatim ih obraditi na radnoj stanici koristeći mogućnosti upravljanja objektima Windows PowerShell.

Međutim, mogućnosti PowerShell Remotinga tek počinju. Možete koristiti cmdlet Enter-PSSession za ulazak u interaktivnu Windows PowerShell sesiju na udaljenom računaru. Možete izaći iz takve sesije pomoću cmdleta Exit-PSSession ili jednostavno izaći.

New-PSSession cmdlet kreira sesije na udaljenim računarima, pokazivači na koje se mogu postaviti u varijablu, a zatim proslijediti kao argument Invoke-Command za izvršavanje komandi na nekoliko računara odjednom, u trajnom okruženju. Možete vidjeti primjer na snimku ekrana, gdje izvršavam niz komandi na nekoliko računara odjednom sa liste c:\computers.txt.

Proxying

Ova metoda se razlikuje od svih gore navedenih i služi potpuno drugačijim zadacima, ali ništa manje relevantnim. Kada delegiranje ovlasti nije moguće ili daje previše moći, omogućava normalnom korisniku da izvrši neku naredbu koja zahtijeva administrativne privilegije bez davanja dodatnih ovlaštenja na bilo koji način ili ugrožavanja lozinke administratora.

Ljudi najčešće rješavaju takve probleme koristeći uslužne programe poput cpau.exe (pogledajte veze) koji kreiraju datoteku sa šifrovanom lozinkom administrativnog naloga koja vam omogućava pokretanje određenog programa. Problem je, međutim, u tome što iako je lozinka šifrirana, uslužni program će je morati dešifrirati prije pokretanja programa. I shodno tome, korisnik može koristiti uslužni program koji ponavlja algoritam dešifriranja lozinke i saznati ga, kako bi ga potom koristio za pokretanje drugih programa ili dobijanje dodatnih privilegija. U praksi je to naravno prilično teško za obične korisnike koji nemaju posebna znanja, ali je, ipak, sasvim moguće. Još jednom ću pojasniti da to nije problem određene korisnosti, već problem ovog pristupa općenito.

Takođe se može činiti da je opcija /savecred uslužnog programa runas prikladna za rješavanje problema. Ali ovdje postoje čak dva problema. Prvo, kao u gore opisanom slučaju, lozinka je pohranjena na korisnikovom računalu i stoga se može dešifrirati, iako će u slučaju runas-a to zahtijevati prava lokalnog administratora. Drugo, runas čuva vjerodajnice bez povezivanja sa određenom komandom, pa će, prema tome, korisnik moći pokrenuti s povišenim pravima ne samo komandu kojoj ste htjeli da mu date pristup, već i bilo koju drugu.

Da bi se izbjegli ovi problemi, ali i dalje omogućilo izvršenje određene naredbe, može se koristiti tehnika koja se zove "proxying".

Radi na sljedeći način. Na računaru je stalno pokrenuta skripta sa visokim privilegijama. Na primjer, u našem slučaju će se pokrenuti sa naloga koji ima administratorska prava na serveru datoteka. Na korisnikov signal će izvršiti jednu unaprijed definiranu naredbu. U ovom primjeru, zatvorite sve datoteke otvorene preko mreže.

Da bismo organizovali ovaj sistem, na server ćemo postaviti, na primer, u fasciklu c:\scripts\ batch fajlove Server.cmd i Action.cmd.

Listing #4 - Server.cmd (Windows paket)

set trigger=c:\commandShare\trigger.txt
set action=c:\scripts\action.cmd
postavite log=c:\scripts\log.txt
:start
ako postoji %trigger% start %action% & echo %time% %date%>>%log% & del %trigger%
sleep.exe 5
moram početi

Listing #5 - Action.cmd (Windows paket)

za /f "skip=4 tokena=1" %%a u ('net fajlovi') uradi net fajlove %%a /close
Izlaz

Server.cmd će čekati prijavu korisnika (kreiranje datoteke u određenom mestu), a nakon što je primite, pokrenite datoteku sa naredbama - Action.cmd. Naravno, korisnici ne bi trebali imati nikakav pristup ovom folderu. Automatsko pokretanje Server.cmd pri pokretanju računara može se organizirati jednostavnim kreiranjem odgovarajućeg zadatka u planeru:

schtasks /create /ru domain\administrator /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

Nakon /ru parametra je naznačen nalog pod kojim će se skripta izvršavati (u našem slučaju ima administratorska prava na serveru), pošto lozinka nije navedena iza /rp parametra - biće zahtevana prilikom kreiranja zadatak. Opcija /sc vam omogućava da odredite kada će se skripta pokrenuti, u našem slučaju, kada je računar uključen. Pa, / tn i / tr vam omogućavaju da navedete ime zadatka i izvršnu datoteku.

Sada, da bi korisnik signalizirao skriptu, kreiraćemo c:\commandShare folder i učiniti ga dostupnim na mreži. Samo korisnici koji će pokrenuti naredbu trebaju imati pristup pisanju u ovu mapu.

Nakon toga će biti dovoljno postaviti datoteku Run.cmd na radnu površinu korisnika.

Listing #6 - Run.cmd (Windows paket)

eho test > \\server\commandShare\trigger.txt

Kada se izvrši, u ime korisnika, kreiraće se datoteka \\server\commandShare\trigger.txt. Skripta Server.cmd, pošto je to primijetila, pokrenut će datoteku Action.cmd sa svojim privilegijama, dodati unos u c:\scripts\log.txt datoteku o trenutnom vremenu, a zatim izbrisati trigger.txt kako ne bi da ponovo izvršite naredbu do sljedećeg korisničkog signala.

Skripta Server.cmd koristi uslužni program Sleep.exe za pauziranje izvršavanja skripte na vremenski period naveden u sekundama. Nije dio operativnog sistema, ali se može preuzeti iz Resource Kit Tools (pogledajte veze) i jednostavno kopirati na bilo koji računar.

Korisno

Odlučili ste da naučite strani jezik? kućni tutor engleski jezik pomoći će vam u ovome. Tamo također možete vježbati s drugim korisnicima.

Jedan od najpopularnijih zadataka za sistemske administratore je pokretanje komande na udaljenom računaru bez napuštanja svog sjedišta. Ovo može biti potrebno za instaliranje programa ili uslužnog programa, promjenu nekih postavki ili bilo šta drugo. I naravno, rijetko je to samo jedan računar, češće se naredba mora izvršiti na više radnih stanica ili servera.

Budući da je ovaj problem popularan, postoji mnogo načina za njegovo rješavanje. Počevši od grupnih politika (koje mogu koristiti skripte za prijavu ili pokretanje za ovu svrhu) i završavajući moćnim sistemima upravljanja kao što su System Center Essentials ili System Center Configuration Manager. Ali u ovom članku želim razmotriti metode koje su dostupne odmah iz komandne linije ili datoteka skripte, a također ne zahtijevaju pre-instalaciju agenata i drugu gužvu. Međutim, naravno postoje neki preduslovi. Na primjer, morate imati administrativne privilegije na računaru na kojem želite da pokrenete naredbu (osim za "proxy" scenario, ali o tome kasnije).

Psexec.exe

Jedan od mojih omiljenih načina da izvršim ovaj zadatak je uslužni program komandne linije PsExec.exe koji je napisao Mark Russinovich, a koji možete besplatno preuzeti sa web stranice Windows SysInternals. Link do njega možete pronaći na kraju članka. Ne zahtijeva instalaciju na sistemu, možete ga jednostavno kopirati u jednu od mapa sadržanih u varijabli okruženja %path% i pozvati je iz bilo koje ljuske komandne linije: Cmd ili PowerShell.

Korištenje PsExec-a je vrlo jednostavno. Na primjer, da pokrenete ipconfig /flushdns na glavnoj mašini, samo pokrenite sljedeću naredbu:

psexec \\main ipconfig /flushdns

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


Naravno, mogućnosti PsExec-a se tu ne završavaju. Pozivanjem uslužnog programa bez parametara, možete vidjeti druge dostupne opcije. Fokusiraću se na samo neke od njih.

Ključ -d govori PsExec-u da nije potrebno čekati izvršenje naredbe, već je samo pokrenite i zaboravite. U ovom slučaju, nećemo primiti izlazne podatke od uslužnog programa konzole, ali ćemo moći pokrenuti druge bez čekanja da se prethodna naredba završi. Ovo je vrlo korisno ako trebate pokrenuti, na primjer, program za instalaciju na više računara.

Podrazumevano, PsExec izvršava komande u skrivenom režimu, to jest, nikakvi prozori ili dijalozi neće biti prikazani na sistemu gde se komanda izvršava. Međutim, moguće je promijeniti ovo ponašanje 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 interfejs prikazati u sesiji konzole.

Dakle, da biste prikazali prozor sa informacijama o verziji operativnog sistema na glavnom računaru, trebalo bi da pokrenete PsExec ovako:

psexec -i \\main winver.exe

Ako želite da izvršite naredbu na nekoliko računara odjednom, biće vam potrebna mogućnost da pročitate njihova imena iz tekstualne datoteke liste.

psexec @c:\comps.txt systeminfo.exe

Pa, jedna od najkorisnijih karakteristika PsExec-a je mogućnost interaktivnog preusmjeravanja ulaza/izlaza između računala, što nam omogućava da pokrenemo, na primjer, cmd.exe na udaljenom serveru, i dajemo mu komande i dobijemo rezultate na lokalnom kompjuter.


Kako Psexec funkcionira?

Sve genijalno je jednostavno. Resursi izvršne datoteke PsExec.exe uključuju drugu izvršnu datoteku, PSEXESVC, koja je Windows usluga. Prije izvršavanja naredbe, PsExec raspakuje ovaj resurs u skriveni administrativni zajednički folder na udaljenom računaru, u datoteku: \\ComputerName\Admin$\system32\psexesvc.exe. Ako ste prekidačem -c označili da želite da kopirate izvršne datoteke na ovaj sistem, one će također biti kopirane u ovaj folder.

Kada se pripremni koraci završe, PsExec instalira i pokreće uslugu koristeći Windows API-je za upravljanje uslugama. Nakon što se PSEXESVC pokrene, kreira se nekoliko kanala između njega i PsExec za prijenos podataka (ulazne komande, rezultati, itd.). Kada se završi, PsExec zaustavlja uslugu i uklanja je sa ciljnog računara.

Windows upravljačka instrumentacija (WMI)

Sljedeći način za implementaciju ovog popularnog zadatka o kojem želim govoriti je korištenje Windows Management Instrumentation. WMI je prisutan u svim Microsoft operativnim sistemima od Windows 2000, a čak i na Windows 9x može se instalirati iz zasebnog paketa. WMI je podrazumevano omogućen i ne zahteva nikakvu dodatnu konfiguraciju. Da biste ga koristili, dovoljna su administrativna prava i DCOM protokol je dozvoljen na firewall-u. WMI pruža mnoštvo opcija za upravljanje sistemima, ali nas trenutno zanima samo jedna od njih.

Za pokretanje procesa potrebna nam je metoda Create klase Win32_Process. Dovoljno je jednostavan za korištenje. U PowerShell-u se to radi ovako:

$Computer = "glavni"
$Command = "cmd.exe /c systeminfo.exe >
("\\$Computer\root\cimv2:Win32_Process").create($Command)

Ovdje sam naveo cmd.exe kao proces koji treba pokrenuti i već sam mu proslijedio potrebnu komandu kao argumente. Ovo je neophodno ako treba da koristite varijable okruženja udaljenog računara ili ugrađene izjave cmd.exe kao što je " > ' za preusmjeravanje izlaza u datoteku. Metoda Create ne čeka da se proces završi i ne vraća nikakve rezultate, već nam umjesto toga govori svoj ID - ProcessID.

Ako koristite računar na kome još uvek nije instaliran PowerShell, možete takođe pozvati ovu WMI metodu iz VBScript skripte. Na primjer ovako:

Listing #1 - Pokretanje procesa koristeći WMI (VBScript)

Computer="PC3"
Naredba = "cmd.exe /c systeminfo.exe > \\server\share\%computername%.txt"
Postavite objWMIService = GetObject("winmgmts:\\" & Računar & "\root\cimv2:Win32_Process")
Rezultat = objWMIService.Create("calc.exe", Null, Null, intProcessID)

Ali mnogo je lakše koristiti uslužni program komandne linije wmic.exe, koji pruža prilično zgodan interfejs za rad sa WMI-jem i uključen je u operativne sisteme počevši od Windows XP-a. U njemu, da biste pokrenuli, na primjer, kalkulator na glavnom računaru, samo pokrenite sljedeću naredbu:

wmic /node:main process call create calc.exe

Naravno, mogućnosti WMI-a nisu ograničene samo na pokretanje procesa. Ako ste zainteresovani da saznate više o ovoj tehnologiji, preporučujem vam da pročitate članke Konstantina Leontijeva o WMI-u, veze do kojih možete pronaći na kraju članka.

WSH Remote Scripting

Da, koliko je čudno, Windows Script Host takođe ima mogućnost pokretanja skripti na drugim računarima. Istina, ova funkcija nije dobila veliku popularnost, a najvjerovatnije zbog činjenice da zahtijeva previše pripremnih aktivnosti, a zauzvrat pruža vrlo malo mogućnosti. Ali svejedno ću govoriti o ovoj metodi, jer može biti od koristi.

Dakle, da bismo pokrenuli skriptu na drugom računaru koristeći WSH, moramo uraditi sljedeće:

    Administratorska prava na udaljenom računaru. Ovo se podrazumijeva i potrebno je za gotovo sve druge metode pokretanja navedene u ovom članku.

    Omogućite WSH Remote Scripting kreiranjem string parametra Remote jednak "1" u sistemskom registru u ključu registratora HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings

    Zbog greške opisane u članku Microsoftove baze znanja 311269, na Windows XP sistemima, možda ćete morati pokrenuti wscript –regserver

    Ako se zaštitni zid koristi na računarima, on mora dozvoliti pristup DCOM-u. Štaviše, to se mora uraditi ne samo na upravljanom računaru, već i na onom sa kojeg želite da pokrenete skriptu.

    Na Windows XP sistemima sa servisnim paketom 2 i novijim, morate promijeniti sigurnosne postavke DCOM-a. To se može učiniti pomoću grupnih politika. U čvoru Konfiguracija računara \ Windows postavke \ Sigurnosne postavke \ Lokalne politike \ Sigurnosne opcije postavite dozvole na sljedeći način:

    1. DCOM: Ograničenja pristupa stroju u sintaksi jezika definicije sigurnosnih deskriptora (SDDL).
      Dodijelite dopuštenja za grupe Anonimna prijava i Svi Dozvoli lokalni i Dozvoli udaljeni pristup

      DCOM: Ograničenja pokretanja stroja u sintaksi jezika definicije sigurnosnih deskriptora (SDDL).
      Dajte administratorskoj grupi dozvole Dozvoli lokalno pokretanje, Dozvoli udaljeno pokretanje, Dozvoli lokalnu aktivaciju, Dozvoli udaljenu aktivaciju
      Grupa Svi - Dozvoli lokalno pokretanje, Dozvoli lokalnu aktivaciju

Pa, nakon svih ovih procedura, možete pokušati da pokrenete svoju skriptu na drugom računaru.

Primjer skripte koja koristi ovu tehnologiju:

Listing #2 - WSH udaljeno skriptiranje (VBScript)

Postavite objController = CreateObject("WshController")
Postavite objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "remote_"
objRemoteScript.Execute
Uradi Dok objRemoteScript.Status<> 1
WScript.Sleep 1000
petlja
MsgBox "Skripta je završena"
Sub remote_Error
Dim objError
Postavite objError = objRemoteScript.Error
WScript.Echo "Error - Line: " & objError.Line & _
", Char: " & objError.Character & vbCrLf & _
"Opis: " & objError.Description
WScript Quit -1
end sub

U njegovom drugom redu, kao parametri za funkciju CreateScript, naznačena je putanja do datoteke skripte koja će se izvršiti na udaljenom računaru i stvarno ime ovog računara.

Detaljniji članak o ovoj tehnologiji možete pronaći u članku Napredni VBScript za Microsoft Windows administratore – Poglavlje 6: Udaljeno skriptiranje(vidi linkove).

Planer zadataka

Planer zadataka se može kontrolisati iz komandne linije pomoću dva uslužna programa - at.exe i schtasks.exe. Oba ova uslužna programa vam omogućavaju da navedete ime udaljenog računara za kreiranje posla i stoga vam omogućavaju da riješite naš problem. Ali detaljno ćemo razmotriti samo schtasks.exe, jer pruža mnogo više funkcija.

Iako izvršavanje komandi na drugim računarima nije glavna svrha planera, ipak vam omogućava implementaciju mnogih zanimljivih scenarija. Na primjer, može se koristiti za omogućavanje instalacije softvera tokom pauze za ručak. Ili ako vaši korisnici ručaju u različito vrijeme, možete pokrenuti nakon određenog perioda neaktivnosti računara.

schtasks /create /s server6.td.local /tn install /tr \\main\data\install.cmd /sc jednom /st 13:00 /ru sistem

Važno je razumjeti u ime kog računa će se zadatak izvršiti. U ovom primjeru sam specificirao parametar /ru za sistemsku vrijednost, stoga, da biste dovršili instalaciju računa računala, trebat će vam pristup za čitanje mrežne mape s kompletom za distribuciju programa.

Još jedno korisno rješenje, čini mi se, je da se zakaže neka radnja za svakodnevno izvršavanje, a zadatak briše tek kada se potvrdi njegov uspjeh. To jest, možete kreirati jednostavnu batch datoteku koja prvo pokreće instalater programa, čeka da se završi i provjerava da li je program uspješno instaliran. Ako je tako, uklanja zadatak iz planera na tom računaru. Primjer takvog fajla:

Listing #3 - Instaliranje programa i zatim brisanje posla (Windows Batch)

msiexec /qn /package \\server\share\subinacl.msi
ako postoji "c:\program files\Windows Resource Kits\Tools\subinacl.exe" (
subinacl /tn Install_Subinacl /f

WinRM (WS Management)

WinRM je Microsoftova implementacija otvorenog standarda DMTF (Distributed Management Task Force) koji omogućava upravljanje sistemima pomoću web usluga. Neću se upuštati u uređaj tehnologije, već ću samo ukratko opisati šta je potrebno za njenu upotrebu.

WinRM verzija 1 i novije su uključene u operativne sisteme počevši od Windows Vista i Windows Server 2008. Za Windows XP i Windows Server 2003, WinRM možete instalirati kao poseban paket (pogledajte veze).

Da biste brzo konfigurisali računar za povezivanje sa njim koristeći standardne portove i omogućili povezivanje sa administrativnim nalozima, samo pokrenite naredbu:

winrm quickconfig

Da spriječite winrm da traži potvrdu, pozivu možete dodati prekidač -quiet. Za više informacija o finom podešavanju pogledajte ugrađenu pomoć za winrm:

winrm help config

Ako upravljani računar koristi web server, WinRM ga ni na koji način neće ometati, iako koristi standardne HTTP portove prema zadanim postavkama. Presreće samo veze namijenjene posebno za to.

Naravno, ne morate ručno da pokrećete ovu naredbu na svakom računaru kojim želite da upravljate. Sva potrebna podešavanja mogu se lako izvršiti pomoću grupnih politika. Za ovo vam je potrebno:

  1. Postavite uslugu WinRM (Windows Remote Management) da se automatski pokrene
  2. Konfigurišite stavku smernica grupe Konfiguracija računara \ Administrativni predlošci \ Windows komponente \ Windows udaljeno upravljanje (WinRM) \ WinRM usluga \ Dozvoli automatsku konfiguraciju slušalaca. Ovdje morate navesti opsege IP adresa sa kojih su veze dozvoljene.
  3. Naravno, takođe ćete morati da dozvolite veze na odgovarajućim portovima (80 podrazumevano) u Windows zaštitnom zidu.

Bez obzira da li se koristi HTTP (80) ili HTTPS (443) port, saobraćaj koji WinRM prenosi je šifrovan (osim ako ne onemogućite ovu opciju, naravno). Zadani protokol provjere autentičnosti je Kerberos.

Ali dosta o postavkama, bolje je ići direktno na korištenje. Iako vam uslužni program winrm omogućava konfigurisanje WinRM usluge, kao i izvršavanje WMI upita, na primjer, više nas zanima još jedan - winrs. Slova RS ovdje znače Remote Shell. WinRS radi vrlo slično PsExec-u, iako koristi WinRM tehnologiju. Ime računara je navedeno pomoću prekidača -r, nakon čega slijedi naredba koju treba izvršiti. Evo nekoliko primjera:

winrs -r:Core ver.exe

Pošto winrs već koristi cmd.exe kao udaljenu ljusku, možete lako pristupiti varijablama udaljenog okruženja u naredbama ili koristiti druge ugrađene cmd.exe komande:

winrs -r:Core "dir c:\temp > c:\temp\list.txt"

Kao i PsExec, uslužni program winrs vam omogućava da otvorite interaktivnu sesiju na udaljenom računaru:

winrs -r:main cmd.exe

Ova funkcija je slična telnet sesiji, ali korištenje winrs-a je definitivno bolje od telneta, pa čak i PsExec-a, sa sigurnosne tačke gledišta. Bez obzira da li se koristi HTTP (80) ili HTTPS (443) port, saobraćaj koji WinRM prenosi je šifrovan (osim ako ne onemogućite ovu opciju, naravno). Zadani protokol provjere autentičnosti je Kerberos.

Windows PowerShell 2.0 daljinsko upravljanje

Iako je druga verzija Windows PowerShell-a još uvijek u beta testiranju u vrijeme pisanja ovog teksta, o njenim mogućnostima na polju daljinskog izvršavanja naredbi sada svakako vrijedi govoriti. Možete ga isprobati sami ili preuzimanjem verzije za pregled (pogledajte veze) ili kao dio beta verzije Windows 7 ili Windows Server 2008 R2.

PowerShell Remoting infrastruktura je bazirana na WinRM verziji 2.0, te stoga nasljeđuje sve prednosti ove tehnologije, kao što je šifriranje prenesenih podataka i mogućnost rada na standardnim HTTP/HTTPS portovima. Ali zahvaljujući bogatstvu Windows PowerShell jezika i njegovoj sposobnosti da radi sa objektima, dobijamo još više mogućnosti. WinRM2.0 je takođe trenutno u beta testiranju i dostupan je samo za preuzimanje na Windows Vista i Windows 2008 sistemima. Biće ugrađen u Windows 7 i Windows Server 2008R2 sisteme, kao i PowerShell 2.0.

Ažuriranje: U vreme kada je članak objavljen na sajtu, konačne verzije PowerShell 2.0 i WinRM 2.0 su već bile dostupne za sve podržane platforme. Oni su već uključeni u Windows Server 2008R2 i Windows 7 kao sastavne komponente sistema, a za Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 sve potrebne komponente se mogu nabaviti kao paket pod nazivom Windows Management Framework.

Prije nego što možete u potpunosti iskoristiti ove prednosti, PowerShell Remoting mora biti omogućen i na menadžerskim i na upravljanim računarima. Ovo je lako učiniti pokretanjem cmdleta (Windows PowerShell komanda) Enable-PSRemoting. Štaviše, ako dodate -Force ključ, tada se neće tražiti potvrda. Ovaj cmdlet će pozvati winrs quickconfig ako je potrebno i kreirat će izuzetke u Windows zaštitnom zidu, tako da nisu potrebne daljnje radnje.

Zatim možete lako izvršiti naredbe na drugim računarima koristeći Invoke-Command cmdlet (ili njegov pseudonim icm):

Invoke-Command -ComputerName Main -ScriptBlock (netsh sučelje dump > c:\ipconfig.txt)

Naravno, komanda se može unapred staviti u promenljivu, a za parametar -ComputerName navesti imena ne jednog, već nekoliko računara odjednom. Sljedeća sekvenca vam omogućava da prikažete verziju datoteke Explorer.exe sa tri računara odjednom.

$Command = ((get-item c:\Windows\explorer.exe).VersionInfo.FileVersion)
Invoke-Command -ComputerName Main, Server7, Replica -ScriptBlock $Command


Kao što vidite, možete proslediti nekoliko komandi odjednom u jednom bloku, staviti njihove rezultate izvršenja na nekoliko računara u varijablu, a zatim ih obraditi na radnoj stanici koristeći mogućnosti upravljanja objektima Windows PowerShell.

Međutim, mogućnosti PowerShell Remotinga tek počinju. Možete koristiti cmdlet Enter-PSSession za ulazak u interaktivnu Windows PowerShell sesiju na udaljenom računaru. Možete izaći iz takve sesije pomoću cmdleta Exit-PSSession ili jednostavno izaći.

New-PSSession cmdlet kreira sesije na udaljenim računarima, pokazivači na koje se mogu postaviti u varijablu, a zatim proslijediti kao argument Invoke-Command za izvršavanje komandi na nekoliko računara odjednom, u trajnom okruženju. Možete vidjeti primjer na snimku ekrana, gdje izvršavam niz komandi na nekoliko računara odjednom sa liste c:\computers.txt.


Proxying

Ova metoda se razlikuje od svih gore navedenih i služi potpuno drugačijim zadacima, ali ništa manje relevantnim. Kada delegiranje ovlasti nije moguće ili daje previše moći, omogućava normalnom korisniku da izvrši neku naredbu koja zahtijeva administrativne privilegije bez davanja dodatnih ovlaštenja na bilo koji način ili ugrožavanja lozinke administratora.

Ljudi najčešće rješavaju takve probleme koristeći uslužne programe poput cpau.exe (pogledajte veze) koji kreiraju datoteku sa šifrovanom lozinkom administrativnog naloga koja vam omogućava pokretanje određenog programa. Problem je, međutim, u tome što iako je lozinka šifrirana, uslužni program će je morati dešifrirati prije pokretanja programa. I shodno tome, korisnik može koristiti uslužni program koji ponavlja algoritam dešifriranja lozinke i saznati ga, kako bi ga potom koristio za pokretanje drugih programa ili dobijanje dodatnih privilegija. U praksi je to naravno prilično teško za obične korisnike koji nemaju posebna znanja, ali je, ipak, sasvim moguće. Još jednom ću pojasniti da to nije problem određene korisnosti, već problem ovog pristupa općenito.

Takođe se može činiti da je opcija /savecred uslužnog programa runas prikladna za rješavanje problema. Ali ovdje postoje čak dva problema. Prvo, kao u gore opisanom slučaju, lozinka je pohranjena na korisnikovom računalu i stoga se može dešifrirati, iako će u slučaju runas-a to zahtijevati prava lokalnog administratora. Drugo, runas čuva vjerodajnice bez povezivanja sa određenom komandom, pa će, prema tome, korisnik moći pokrenuti s povišenim pravima ne samo komandu kojoj ste htjeli da mu date pristup, već i bilo koju drugu.

Da bi se izbjegli ovi problemi, ali i dalje omogućilo izvršavanje određene naredbe, može se koristiti tehnika koja se zove "proxying".

Radi na sljedeći način. Na računaru je stalno pokrenuta skripta sa visokim privilegijama. Na primjer, u našem slučaju će se pokrenuti sa naloga koji ima administratorska prava na serveru datoteka. Na korisnikov signal će izvršiti jednu unaprijed definiranu naredbu. U ovom primjeru, zatvorite sve datoteke otvorene preko mreže.

Da bismo organizovali ovaj sistem, na server ćemo postaviti, na primer, u fasciklu c:\scripts\ batch fajlove Server.cmd i Action.cmd.

Listing #4 - Server.cmd (Windows paket)

set trigger=c:\commandShare\trigger.txt
set action=c:\scripts\action.cmd
postavite log=c:\scripts\log.txt
:start
ako postoji %trigger% start %action% & echo %time% %date%>>%log% & del %trigger%
sleep.exe 5
moram početi

Listing #5 - Action.cmd (Windows paket)

za /f "skip=4 tokena=1" %%a u ('net fajlovi') uradi net fajlove %%a /close
Izlaz

Server.cmd će sačekati znak od korisnika (kreirati fajl na određenom mestu), a nakon što ga primi, pokrenite fajl sa komandama - Action.cmd. Naravno, korisnici ne bi trebali imati nikakav pristup ovom folderu. Automatsko pokretanje Server.cmd pri pokretanju računara može se organizirati jednostavnim kreiranjem odgovarajućeg zadatka u planeru:

schtasks /create /ru domain\administrator /rp /sc onstart /tn ProxyScript /tr c:\scripts\server.cmd

Nakon /ru parametra je naznačen nalog pod kojim će se skripta izvršavati (u našem slučaju ima administratorska prava na serveru), pošto lozinka nije navedena iza /rp parametra - biće zahtevana prilikom kreiranja zadatak. Opcija /sc vam omogućava da odredite kada će se skripta pokrenuti, u našem slučaju, kada je računar uključen. Pa, / tn i / tr vam omogućavaju da navedete ime zadatka i izvršnu datoteku.

Sada, da bi korisnik signalizirao skriptu, kreiraćemo c:\commandShare folder i učiniti ga dostupnim na mreži. Samo korisnici koji će pokrenuti naredbu trebaju imati pristup pisanju u ovu mapu.

Nakon toga će biti dovoljno postaviti datoteku Run.cmd na radnu površinu korisnika.

Listing #6 - Run.cmd (Windows paket)

eho test > \\server\commandShare\trigger.txt

Kada se izvrši, u ime korisnika, kreiraće se datoteka \\server\commandShare\trigger.txt. Skripta Server.cmd, pošto je to primijetila, pokrenut će datoteku Action.cmd sa svojim privilegijama, dodati unos u c:\scripts\log.txt datoteku o trenutnom vremenu, a zatim izbrisati trigger.txt kako ne bi da ponovo izvršite naredbu do sljedećeg korisničkog signala.

Skripta Server.cmd koristi uslužni program Sleep.exe za pauziranje izvršavanja skripte na vremenski period naveden u sekundama. Nije dio operativnog sistema, ali se može preuzeti iz Resource Kit Tools (pogledajte veze) i jednostavno kopirati na bilo koji računar.

Verovatno ćete želeti da iskoristite podršku za više monitora ugrađenu u alatku Windows Vista (Remote Desktop). Ova funkcija vam omogućava da proširite radnu površinu udaljenog računara na sve monitore povezane na lokalni sistem.

Međutim, nije ga lako pronaći – ne pristupa se iz grafičkog korisničkog interfejsa alata, već iz komandne linije.

Ograničenja

Podrška za više monitora prilikom povezivanja na udaljenu radnu površinu je vrlo zgodna funkcija, ali ima dva ograničenja:

1. Svi monitori povezani na sistem moraju imati istu rezoluciju.

2. Rezolucija ekrana svih monitora, uključujući i one na udaljenom sistemu, ne smije prelaziti 4096 x 2048 piksela.

Komandna linija

Da biste pokrenuli vezu sa udaljenom radnom površinom sa podrškom za više monitora, potrebno je da otvorite komandnu liniju i unesete sljedeću naredbu:


Nakon toga, otvoriće se standardni okvir za dijalog Remote Desktop Connection u kojem treba da konfigurišete postavke veze (pogledajte sliku A).

Slika A Prilikom pokretanja veze sa udaljenom radnom površinom iz komandne linije, postavke veze će morati da se popune ručno.

Kada se veza uspostavi, radna površina udaljenog sistema će se pojaviti na svim monitorima povezanim na lokalni sistem. Ako vam je potrebna i lokalna i udaljena radna površina, možete ograničiti veličinu potonjeg na jedan monitor klikom na dugme "Vrati nadole" u prozoru udaljene radne površine. Za ovo možete koristiti i prečice na tastaturi.

Nakon što se prozor udaljene radne površine pojavi na monitoru, može se rastegnuti mišem da popuni cijeli ekran. Imajte na umu da ako smanjite veličinu rastegnutog prozora udaljene radne površine, morat ćete koristiti horizontalne i vertikalne trake za pomicanje da biste vidjeli cijeli ekran, kao što je prikazano na slici. B. Ali uvijek se može vratiti klikom na dugme Maksimiziraj.



Slika B Kada smanjite veličinu rastegnutog prozora udaljene radne površine, morate koristiti horizontalne i vertikalne trake za pomicanje da biste vidjeli cijeli ekran.

Kreirajte prečicu

Naravno, svaki put pokretanje veze sa udaljenom radnom površinom iz komandne linije nije baš zgodno. Ako već imate sačuvanu datoteku postavki veze RDP udaljene radne površine, možete kreirati standardnu ​​Windows prečicu za povezivanje pomoću ove datoteke i opcija komandne linije.

Kliknite desni klik miša bilo gdje na radnoj površini i odaberite Novo | Prečica" (Novo | Prečica). U dijaloškom okviru čarobnjaka Kreiraj prečicu unesite naredbu mstsc /span i putanju do RDP datoteke, kao što je prikazano na slici 1. C. Ako u adresi datoteke ima razmaka, obavezno je stavite u dvostruke navodnike. Sada kliknite "Dalje" (Next), dodijelite prečicu prikladno ime, na primjer, "Saturn - Connect. sa nekoliko monitori" i kliknite na "Završi".



Slika C Možete kreirati standardnu ​​Windows prečicu za povezivanje pomoću RDP datoteke i opcija komandne linije.

Sada, koristeći ovu prečicu, moći ćete da se povežete na udaljeni računar koristeći sve dostupne monitore. Naravno, kada otvarate više prozora, rastegnuta radna površina će se ponašati drugačije nego kada radite sa više monitora na lokalnom sistemu - moraćete da pokažete svoju maštu i promenite veličinu prozora tako da svi udobno stanu na udaljenu radnu površinu.

Šta ti misliš?

Koliko monitora je povezano na vaš računar? Koliko često koristite vezu sa udaljenom radnom površinom? Hoćete li koristiti podršku za više monitora Vista veze sa udaljenom radnom površinom? Podelite svoje mišljenje sa nama u komentarima!