Pokrenite udaljenu radnu površinu. Pristup udaljenoj radnoj površini

Postojao je zadatak izvršiti neku operaciju pomoću naredbeni redak na drugom računalu, naravno, idite korisniku da pokrene naredbeni redak i unese naredbe - nije naša metoda, moramo pokrenuti naredbeni redak udaljenog računala bez ustajanja sa stolice i izvršiti potrebne radnje na naredbu crta. Naravno, takva se radnja može izvesti pomoću programa za daljinsko povezivanje, ali to nije uvijek zgodno i zahtijeva da vi i korisnik (klijent-poslužitelj) imate sličan program. Postupak spajanja na naredbeni redak drugog računala može se izvesti mnogo jednostavnije pomoću naredbe PSEXEC.

psexec je uslužni program naredbenog retka s mogućnošću interaktivnog pozivanja sučelja naredbenog retka na udaljenim Windows sustavima i pokretanja različitih naredbi na daljinu.

Ovaj uslužni program instaliran je samo na računalu administratora. Da biste ga instalirali, morate ga preuzeti, ovdje je poveznica Službeno web mjesto Microsofta . Nakon preuzimanja arhive potrebno ju je raspakirati, u raspakovanoj mapi pronaći datoteku PsExec.exe. Dvaput kliknite na njega, pojavit će se prozor s licencnim ugovorom, kliknite " Slažem se".

Analizirajmo sintaksu naredbe:

psexec [\\računalo[,računalo2[,...] | @datoteka][-u korisnik [-p lozinka]][-n s][-l][-s|-e][-x][-i [sesija]][-c [-f|-v]] [-w imenik][-d][-<приоритет>][-a n,n,... ] program [argumenti]

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

@datoteka Kaže PsExecu da pokrene aplikaciju na svim računalima navedenim u navedenoj tekstualnoj datoteci.

-a Procesori na kojima se aplikacija može pokrenuti odvojeni su zarezima, a procesori su numerirani počevši od 1. Na primjer, za pokretanje aplikacije na procesorima dva i četiri upišite "-a 2,4"

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

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

-e Navedeni profil računa nije učitan.

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

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

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

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

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

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

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

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

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

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

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

program Naziv programa za pokretanje.

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

Primjeri timskog rada PSEXEC:

1) Kako biste pokrenuli naredbeni redak drugog računala, morate unijeti
psexec \\<имя компьюетра>cmd

na primjer:
psexec \\WIN782 cmd



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

2) Kako biste pokrenuli program (test.exe u ovom primjeru) na udaljenom računalu, morate izvršiti naredbu (ova naredba kopira test.exe program na udaljeni sustav 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 sustavu i nije u direktoriju sustava, navedite punu stazu do ovog programa

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

U prethodnim poslužiteljskim verzijama sustava Windows, administrator je morao koristiti terminalske usluge za daljinsko upravljanje poslužiteljem. Nedostatak ovog rješenja bila je potreba za implementacijom Terminal Services čak i kada je administrator trebao samo jednu udaljenu vezu za obavljanje rutinskih administrativnih zadataka. Windows XP i Windows Server 2003 imaju standardni mehanizam Udaljena radna površina za administraciju ili jednostavno Remote Desktop, koji vam omogućuje daljinsko povezivanje i izvođenje potrebnih operacija za upravljanje poslužiteljem. Ovaj mehanizam se temelji na Terminal Services i podržava dvije istovremene udaljene veze (u Windows XP - jednu). Administrator može upravljati svim poslužiteljima koji rade pod sustavom Windows Server 2003 s bilo koje radne stanice tako da se s njima poveže na daljinu.

Bilješka
Mehanizam udaljene radne površine za administraciju u biti nije isti kao način rada daljinske administracije koji podržavaju terminalske usluge Windows 2000. U sustavu Windows Server 2003 zadatak daljinske administracije odvojen je od terminalskih usluga i implementiran kao zaseban mehanizam. Odvajanjem mehanizma daljinske administracije od Terminal Services-a omogućeno je smanjenje opterećenja poslužitelja na minimum u situaciji kada samo trebate upravljati poslužiteljem s drugog računala.

Windows XP i Windows Server 2003 također imaju značajku Remote Assistance koja korisniku omogućuje iniciranje pristupa svom računalu i dobivanje pomoći u teškim situacijama (pogledajte sljedeći odjeljak).

Bilješka
Značajke udaljene radne površine i daljinske pomoći su prema zadanim postavkama onemogućene.

Osim toga, ako je web poslužitelj instaliran na računalu sa sustavom Windows XP ili Windows Server 2003 kao dio Internet Information Services (IIS), tada putem tog računala možete daljinski pristupiti bilo kojem sustavu Windows XP ili Windows Server 2003 koji je u tom iste lokalne mreže, iz web preglednika (Internet Explorer 4.0 i noviji) koji radi na bilo kojem operativnom sustavu. Ova značajka omogućuje, na primjer, na računalu male snage sa sustavom Windows 95 da pokrene preglednik i, unosom naziva udaljenog sustava Windows Server 2003 koji se temelji na nekom moćnom procesoru, radi na njemu u način rada preko cijelog zaslona.
Sve sesije daljinskog pristupa su šifrirane kako bi se spriječio neovlašteni pristup podacima i sustavima: korišteni RDP protokol je šifriran pomoću RC4 algoritma.

Dopuštenje za daljinski pristup

Za upravljanje načinom daljinskog pristupa (nemojte ga brkati s daljinskim pristupom putem dial-up veze!) Koristite karticu Remote (Udaljena upotreba) u prozoru System Properties (Slika 10.9). (Za brz pristup ovom prozoru, možete koristiti tipke +.)
Kako biste korisnicima s drugih računala omogućili pristup vašem sustavu, potvrdite okvir Dopusti korisnicima da se daljinski povežu s ovim računalom. Klikom na gumb Odaberi udaljene korisnike možete eksplicitno odrediti kojim korisnicima je dopušten daljinski pristup (Slika 10.10): ti će korisnici biti uključeni u lokalnu grupu korisnika udaljene radne površine. Prema zadanim postavkama samo administratori imaju udaljeni pristup računalu.
Ne možete koristiti račune bez lozinke za daljinski pristup. Ako na računalu postoje takvi unosi, kada označite potvrdni okvir Dopusti korisnicima da se daljinski povežu s ovim računalom, pojavit će se upozorenje, kao što je prikazano na sl. 10.11.

Riža. 10.9. Kontrolni prozor za udaljenu radnu površinu i daljinsku pomoć

Riža. 10.10. Korisnici navedeni u ovom prozoru bit će dopušteni daljinski pristup radnoj površini računala


Riža. 10.11. Podsjetnik da se računi bez lozinke ne mogu koristiti za udaljeni pristup računalu

Uslužni program Remote Desktop Connection koristi se za pokretanje sesije udaljenog pristupa (pokreće se iz podizbornika Start | Svi programi | Dodaci | Komunikacije ili pomoću naredbe mstsc iz naredbenog retka). Unesite naziv ili IP adresu udaljenog računala i kliknite na gumb Connect (Slika 10.12) - i za nekoliko trenutaka vidjet ćete prozor koji vas poziva da se prijavite na udaljeni sustav!

Pažnja

Riža. 10.11. Podsjetnik da se računi bez lozinke ne mogu koristiti za udaljeni pristup računalu

Pokretanje i konfiguriranje sesije udaljenog pristupa

Uslužni program Remote Desktop Connection koristi se za pokretanje sesije udaljenog pristupa (pokreće se iz podizbornika Start | Svi programi | Dodaci | Komunikacije ili pomoću naredbe mstsc iz naredbenog retka). Unesite naziv ili IP adresu udaljenog računala i kliknite na gumb Connect (Slika 10.12) - i za nekoliko trenutaka vidjet ćete prozor koji vas poziva da se prijavite na udaljeni sustav!



Riža. 10.12. Iz ovog prozora možete pokrenuti sesiju s udaljenim računalom

Pažnja

Na Windows XP sustavima, prijava pomoću Remote Desktopa "izbacuje" trenutnog korisnika iz sustava bez zatvaranja trenutne sesije. Ako se udaljeni korisnik prijavi s imenom već registriranog korisnika, tada dobiva radno okruženje - otvorene prozore, pokrenute programe - ovog korisnika, koji se zauzvrat može ponovno prijaviti i izgurati "vanzemaljca". Samo pri korištenju daljinske pomoći moguće je da dva korisnika rade u istoj sesiji u isto vrijeme. To se ne događa u sustavu Windows Server 2003 jer oni dopuštaju dvije sesije za udaljenu administraciju. No, ako koristite naredbu mstsc /console, možete dobiti isti način rada kao u Windows XP-u – dakle, s "push".
U prozoru Remote Desktop Connection kliknite gumb Options i pažljivo pregledajte sve kartice koje definiraju opcije udaljene veze. Možete, primjerice, postaviti veličinu zaslona, ​​dubinu boje (do 24 bita), brzinu veze itd. Obratite pozornost na karticu Lokalni resursi (Sl. 10.13).

Riža. 10.13. Kartica koja kontrolira ponovno dodjeljivanje lokalnih uređaja

Prema zadanim postavkama, zvuk s udaljenog računala preusmjerava se na lokalno računalo, a možete ispisivati ​​na lokalni pisač dok radite na udaljenom računalu. Ako označite potvrdni okvir Diskovi, možete koristiti diskove oba sustava istovremeno. Ovo je vrlo zgodno, na primjer, za kopiranje datoteka: "jednim pokretom ruke" u prozoru Windows Explorera (gdje će biti prikazani diskovi oba računala), možete kopirati bilo koju informaciju s udaljenog računala na svoj lokalni disk .
Kartica Iskustvo (Sl. 10.14) omogućuje vam prilagodbu sesije daljinskog pristupa parametrima veze: možete onemogućiti neke grafičke značajke za kanale niske brzine i omogućiti sve značajke kada ste povezani putem lokalne mreže.

Riža. 10.14. Konfiguriranje parametara daljinskog pristupa ovisno o brzini komunikacijskog kanala

Za prebacivanje prozora sesije s cijelog zaslona na zaslon fiksne veličine i obrnuto koristite tipke ++

Sustavi Windows Server 2003 koriste dodatak Remote Desktops za pristup uslugama terminala. Također se može koristiti za udaljeni pristup računalima. Na sl. Slika 10.15 prikazuje primjer povezivanja na dva udaljena računala (udaljeni poslužitelj i kontroler domene) u isto vrijeme. Svaka je sesija unaprijed stvorena i konfigurirana (pogledajte Snap-In Root i Remote Access Session Tree), nakon čega se može jednostavno pokrenuti pokazivanjem pokazivača na popisu. Također se možete jednostavno prebacivati ​​između različitih sesija.


Riža. 10.15. Dodatni prozor za udaljene radne površine s dvije istovremene sesije daljinskog pristupa

Izlazak iz sesije

Kada radi u sesiji udaljenog pristupa računalu, administrator ima tri mogućnosti za prekid sesije (u svakom slučaju mora otvoriti izbornik Start (Start) i kliknuti gumb Isključi (Kraj rada)):

  • računalo možete isključiti odabirom opcije Shut down u prozoru Shut Down Windows;
  • možete se odjaviti sa sustava odabirom opcije Odjava;
  • trenutnu sesiju možete prekinuti odabirom opcije Disconnect - u tom slučaju, prilikom ponovnog spajanja na ovo računalo s prethodno korištenim imenom, administrator će dobiti isto radno okruženje (otvoreni prozori i pokrenuti programi) koje je “napustio” prilikom prekida veze s sesija.

Udaljeni pristup putem interneta

Za pristup vašem računalu putem interneta unesite http:// u adresno polje vašeg preglednika.<имя_cepвepa>/TSWeb , gdje je server_name DNS naziv web poslužitelja (računalo s instaliranim IIS-om) ili njegova IP adresa.


Riža. 10.16. Prozor internetske veze udaljeno računalo

Nakon spajanja na poslužitelj pojavit će se web stranica Remote Desktop Web Connection (Slika 10.16), gdje u polju Server morate navesti naziv ili adresu računala na koje se želite spojiti, a zatim kliknite na gumb Connect. Imajte na umu da se nazivi web poslužitelja i ciljanog računala mogu razlikovati: tj. "prijavljujete se" na mrežu putem jednog računala, ali se povezujete s bilo kojim drugim.

Pažnja
Da bi opisani način funkcionirao, komponenta Remote Desktop Web Connection mora biti instalirana na poslužitelju kao dio usluge WWW (World Wide Web Service).

Prvi put kada slijedite ovaj postupak, poslužitelj će preuzeti ActiveX komponentu koju trebate instalirati na svoje lokalno računalo. Njegov prozor je prikazan na sl. 10.17. Pritisnite gumb Da.


Riža. 10.17. Upozorenje o instaliranju ActiveX komponente na lokalnom računalu

Nakon toga se uspostavlja veza s odabranim (ciljnim) računalom i pojavljuje se tradicionalni prozor za registraciju. Na sl. 10.18, na primjer, prikazan je prozor preglednika Internet Explorer, koji prikazuje sesiju na udaljenom računalu. Imajte na umu da se u adresnom prozoru prikazuje IP adresa jednog računala (preko kojeg smo ušli u mrežu), a veza se uspostavlja s drugim računalom - njegova adresa je naznačena na dnu ekrana. Podsjetimo da se takva slika može dobiti u bilo kojem operativnom sustavu gdje je instaliran Internet Explorer verzija 4.0 i novija. U načinu rada preko cijelog zaslona, ​​ploče preglednika uopće se ne prikazuju, a vidjet ćemo samo radnu površinu udaljenog računala.

Riža. 10.17. Upozorenje o instaliranju ActiveX komponente na lokalnom računalu

Nakon toga se uspostavlja veza s odabranim (ciljnim) računalom i pojavljuje se tradicionalni prozor za registraciju. Na sl. 10.18, na primjer, prikazan je prozor preglednika Internet Explorer, koji prikazuje sesiju na udaljenom računalu. Imajte na umu da se u adresnom prozoru prikazuje IP adresa jednog računala (preko kojeg smo ušli u mrežu), a veza se uspostavlja s drugim računalom - njegova adresa je naznačena na dnu ekrana. Podsjetimo da se takva slika može dobiti u bilo kojem operativnom sustavu gdje je instaliran Internet Explorer verzija 4.0 i novija. U načinu rada preko cijelog zaslona, ​​ploče preglednika uopće se ne prikazuju, a vidjet ćemo samo radnu površinu udaljenog računala.



Jedan od najpopularnijih zadataka za administratore sustava je pokretanje naredbe na udaljenom računalu. To može biti potrebno za instaliranje programa ili uslužnog programa, promjenu postavki itd. Rijetko govorimo samo o jednom računalu, češće je potrebna naredba pokrenuti na više radnih stanica ili poslužitelja.

Budući da je ovaj problem popularan, postoji mnogo načina za njegovo rješavanje. Počevši od pravila grupe (u kojima možete koristiti skripte za prijavu ili pokretanje u tu svrhu), pa sve do moćni sustavi upravljanje, kao što je System Center Essentials ili System Center Configuration Manager. Ali u ovom članku želim razmotriti metode koje su odmah dostupne iz naredbenog retka ili datoteka skripti, a također ne zahtijevaju predinstalaciju agenata i druge frke. Međutim, naravno postoje neki preduvjeti. Na primjer, morate imati administrativne ovlasti na računalu na kojem želite pokrenuti naredbu (osim za "proxy" scenarij, ali o tome kasnije).

Jedan od mojih omiljenih načina za obavljanje ovog zadatka je PsExec.exe uslužni program naredbenog retka koji je napisao Mark Russinovich, a koji možete besplatno preuzeti s web stranice Windows SysInternals. Poveznicu na nju možete pronaći na kraju članka. Ne zahtijeva instalaciju na sustavu, možete ga jednostavno kopirati u jednu od mapa sadržanih u varijabli okruženja %path% i pozvati ga iz bilo koje ljuske naredbenog retka: Cmd ili PowerShell.

Korištenje PsExeca je vrlo jednostavno. Na primjer, da pokrenete ipconfig /flushdns na glavnom računalu, samo pokrenite sljedeću naredbu:

psexec \\main ipconfig /flushdns

Naredba ipconfig pokrenut će se na glavnom računalu pod vašim vjerodajnicama. Kada ipconfig završi, sav tekstualni izlaz bit će poslan na vaše računalo, plus izlazni kod naredbe (kôd greške) bit će vraćen. Ako je naredba bila uspješna, bit će 0.

Naravno, mogućnosti PsExeca tu ne prestaju. Pozivanjem uslužnog programa bez parametara možete vidjeti druge dostupne opcije. Usredotočit ću se na samo neke od njih.

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

Prema zadanim postavkama, PsExec izvršava naredbe u prikrivenom načinu rada, to jest, prozori ili dijalozi neće biti prikazani na sustavu gdje se naredba izvršava. Međutim, moguće je promijeniti ovo ponašanje pomoću opcije -i. Nakon toga možete odrediti broj sesije u kojoj želite prikazati prozore ili ga ne možete odrediti, tada će sučelje biti prikazano u sesiji konzole.

Dakle, da se prikaže prozor s informacijama o verziji operacijski sustav na glavnom stroju trebali biste pokrenuti PsExec ovako:

psexec -i \\glavni winver.exe

Ako želite izvršiti naredbu na nekoliko računala odjednom, trebat će vam mogućnost čitanja njihovih imena iz tekstualne datoteke popisa.

psexec @c:\comps.txt systeminfo.exe

Pa, jedna od najkorisnijih značajki PsExeca je mogućnost interaktivnog preusmjeravanja ulaza/izlaza između računala, što nam omogućuje pokretanje, na primjer, cmd.exe na udaljenom poslužitelju, davanje naredbi i dobivanje rezultata na lokalnom Računalo.

Kako radi Psexec?

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 raspakira ovaj resurs u skrivenu administrativnu dijeljenu mapu na udaljenom računalu, u datoteku: \\NazivRačunala\Admin$\system32\psexesvc.exe. Ako ste s prekidačem -c označili da želite kopirati izvršne datoteke u ovaj sustav, one će također biti kopirane u ovu mapu.

Nakon što su pripremni koraci dovršeni, PsExec instalira i pokreće uslugu pomoću Windows API-ja za upravljanje uslugama. Nakon što se PSEXESVC pokrene, stvara se nekoliko kanala između njega i PsExeca za prijenos podataka (ulazne naredbe, rezultati itd.). Kada završi, PsExec zaustavlja uslugu i uklanja je s ciljnog računala.

Windows Management Instrumentation (WMI)

Sljedeći način implementacije ovog popularnog zadatka o kojem želim govoriti je korištenje Windows Management Instrumentation. WMI je prisutan u svim Microsoft operativnim sustavima od Windows 2000, a čak i na Windows 9x može se instalirati iz posebnog paketa. WMI je omogućen prema zadanim postavkama i ne zahtijeva nikakvu dodatnu konfiguraciju. Za njegovu upotrebu dovoljna su administratorska prava i dopušten DCOM protokol na vatrozidu. WMI nudi mnoštvo opcija za upravljanje sustavima, 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 to se radi ovako:

$Računalo = "glavno"
$Command = "cmd.exe /c systeminfo.exe >
("\\$Računalo\root\cimv2:Win32_Process").kreiraj ($Naredba)

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 koristiti varijable okruženja udaljenog računala ili ugrađene cmd.exe izjave 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čunalo koje još nema instaliran PowerShell, ovu WMI metodu možete pozvati i iz VBScript skripte. Na primjer ovako:

Popis #1 - Pokretanje procesa pomoću WMI (VBScript)

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

Ali puno je lakše koristiti uslužni program naredbenog retka wmic.exe, koji pruža prilično prikladno sučelje za rad s WMI-jem i uključen je u operacijske sustave počevši od Windows XP. U njemu, za pokretanje, na primjer, kalkulatora na glavnom računalu, samo pokrenite sljedeću naredbu:

wmic /node:poziv glavnog procesa create calc.exe

Naravno, mogućnosti WMI-ja nisu ograničene samo na pokretanje procesa. Ako ste zainteresirani saznati više o ovoj tehnologiji, preporučujem da pročitate članke Konstantina Leontieva o WMI-ju, poveznice na koje možete pronaći na kraju članka.

WSH udaljeno skriptiranje

Da, čudno, Windows Script Host također ima mogućnost pokretanja skripti na drugim računalima. Istina, ova funkcija nije dobila veliku popularnost, a najvjerojatnije zbog činjenice da zahtijeva previše pripremnih aktivnosti, a zauzvrat pruža vrlo malo mogućnosti. Ali svejedno ću govoriti o ovoj metodi jer bi mogla dobro doći.

Dakle, da bismo pokrenuli skriptu na drugom računalu koristeći WSH, moramo učiniti sljedeće:

Administratorska prava na udaljenom računalu. To se podrazumijeva i potrebno je za gotovo svaku drugu metodu pokretanja navedenu u ovom članku. Omogućite WSH Remote Scripting postavljanjem vrijednosti niza Remote na "1" u registru sustava u ključu registra HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings wscript –regserver naredba Ako se na računalima koristi vatrozid, mora dopustiti pristup na DCOM. Štoviše, to se mora učiniti ne samo na upravljanom računalu, već i na onom s kojeg želite pokrenuti skriptu. Na Windows XP sustavima sa servisnim paketom 2 i novijim, morate promijeniti DCOM sigurnosne postavke. To se može učiniti pomoću pravila grupe. Pod Konfiguracija računala \ Windows postavke \ Sigurnosne postavke \ Lokalna pravila \ Sigurnosne opcije, postavite dopuštenja na sljedeći način: DCOM: Ograničenja pristupa stroju u sintaksi Sigurnosnog deskriptorskog jezika (SDDL)
Dodijelite Anonimnu prijavu i grupama za sve dopuštenja Dopusti lokalni i Dopusti daljinski pristup DCOM: Ograničenja pokretanja stroja u sintaksi Sigurnosnog deskriptorskog jezika (SDDL)
Dodijelite dopuštenja grupi administratora Dopusti lokalno pokretanje, Dopusti daljinsko pokretanje, Dopusti lokalnu aktivaciju, Dopusti daljinsku aktivaciju
Grupa Svi - Dopusti lokalno pokretanje, Dopusti lokalnu aktivaciju

Pa, nakon svih ovih postupaka, možete pokušati pokrenuti svoju skriptu na drugom računalu.

Primjer skripte koja koristi ovu tehnologiju:

Ispis #2 - WSH udaljeno skriptiranje (VBScript)

Postavi objController = CreateObject("WshController")
Postavite objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "remote_"
objRemoteScript.Izvrši
Uradi Dok objRemoteScript.Status 1
WScript.Sleep 1000
petlja
MsgBox "Skripta dovršena"
Sub remote_Error
Dim objError
Postavite objError = objRemoteScript.Error
WScript.Echo "Pogreška - Redak: " & objError.Line & _
", Char: " & objError.Character & vbCrLf & _
"Opis: " & objError.Description
Izlaz iz WScripta -1
kraj sub

U drugom retku, kao parametri za CreateScript funkciju, naznačen je put do datoteke skripte koja će se izvršiti na udaljenom računalu i stvarni naziv ovog računala.

Planer zadataka

Task Scheduler se može kontrolirati iz naredbenog retka pomoću dva pomoćna programa - at.exe i schtasks.exe. Oba ova pomoćna programa omogućuju vam da navedete naziv udaljenog računala za kreiranje posla i stoga vam omogućuju da riješite naš problem. Ali detaljno ćemo razmotriti samo schtasks.exe, budući da pruža mnogo više mogućnosti.

Iako izvršavanje naredbi na drugim računalima nije glavna svrha planera, ipak vam omogućuje implementaciju mnogih zanimljivih scenarija. Na primjer, može se koristiti za omogućavanje instalacije softver za vrijeme pauze za ručak. Ili ako vaši korisnici ručaju u drugačije vrijeme, pokretanje se može izvršiti nakon određenog razdoblja neaktivnosti računala.

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

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

Još jedno korisno rješenje, čini mi se, je zakazati neku akciju za dnevno izvršenje i izbrisati zadatak tek kada se potvrdi njegov uspjeh. To jest, možete stvoriti jednostavnu batch datoteku koja prvo pokreće instalacijski program programa, čeka da završi i provjerava je li program uspješno instaliran. Ako je tako, uklanja zadatak iz planera na tom računalu. Primjer takve datoteke:

Popis #3 - Instalacija programa i potom brisanje zadatka (Windows Batch)

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

WinRM (WS upravljanje)

WinRM je Microsoftova implementacija otvorenog standarda DMTF (Distributed Management Task Force) koja omogućuje upravljanje sustavima korištenjem web usluga. Neću ulaziti u uređaj tehnologije, već ću samo ukratko opisati što je potrebno za njegovu upotrebu.

WinRM verzija 1 i novija uključena je u operativne sustave počevši od Windows Vista i Windows Server 2008. Za Windows XP i Windows Server 2003 možete instalirati WinRM kao zasebni paket (pogledajte veze).

Kako biste brzo konfigurirali računalo za povezivanje s njim pomoću standardnih portova i dopuštanje povezivanja s administrativnim računima, samo pokrenite naredbu:

winrm quickconfig

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

winrm pomoć konfiguracija

Ako upravljano računalo pokreće web poslužitelj, WinRM ga neće ni na koji način ometati, iako prema zadanim postavkama koristi standardne HTTP priključke. Presretat će samo veze namijenjene posebno za njega.

Naravno, ovu naredbu ne morate pokretati ručno na svakom računalu kojim želite upravljati. Sve potrebne postavke mogu se lako izvršiti korištenjem pravila grupe. Za ovo vam je potrebno:

Konfigurirajte uslugu WinRM (Windows Remote Management) za automatsko pokretanje Konfigurirajte stavku Konfiguracija računala \ Administrativni predlošci \ Windows komponente \ Windows Remote Management (WinRM) \ WinRM Service \ Dopusti automatsku konfiguraciju GPO stavke slušatelja. Ovdje morate navesti raspone IP adresa s kojih su veze dopuštene. Naravno, također ćete morati dopustiti veze na odgovarajućim priključcima (80 prema zadanim postavkama) u Windows vatrozidu.

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

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

winrs -r: Core ver.exe

Budući da winrs već koristi cmd.exe kao udaljenu ljusku, možete jednostavno pristupiti udaljenim varijablama okruženja u naredbama ili koristiti druge ugrađene cmd.exe naredbe:

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

Kao i PsExec, uslužni program winrs omogućuje vam otvaranje interaktivne sesije na udaljenom računalu:

winrs -r:glavni cmd.exe

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

Windows PowerShell 2.0 Remoting

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

Infrastruktura PowerShell Remoting temelji se na WinRM verziji 2.0, te stoga nasljeđuje sve prednosti ove tehnologije, poput enkripcije prenesenih podataka i mogućnosti rada na standardnim HTTP/HTTPS portovima. Ali zahvaljujući bogatstvu jezika Windows PowerShell i njegovoj mogućnosti rada s objektima, dobivamo još više mogućnosti. Na ovaj trenutak WinRM2.0 je također u beta verziji i dostupan je samo za preuzimanje na sustavima Windows Vista i Windows 2008. Bit će ugrađen u sustave Windows 7 i Windows Server 2008R2 odmah po otvaranju, zajedno s PowerShell 2.0.

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

Prije nego što u potpunosti iskoristite ove prednosti, PowerShell Remoting mora biti omogućen i na upravitelju i na upravljanom računalu. To je lako učiniti pokretanjem cmdleta (Windows PowerShell naredba) Enable-PSRemoting. Štoviše, ako dodate tipku -Force, tada se neće tražiti potvrda. Ova cmdlet će pozvati winrs quickconfig ako je potrebno i stvorit će iznimke u vatrozidu Windowsa, tako da nije potrebna nikakva daljnja radnja.

Zatim možete jednostavno izvršavati naredbe na drugim računalima koristeći cmdlet Invoke-Command (ili njegov alias icm):

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

Naravno, naredba se može staviti u varijablu unaprijed, a za parametar -ComputerName odrediti imena ne jednog, već nekoliko računala odjednom. Sljedeći slijed omogućuje prikaz verzije datoteke Explorer.exe s tri računala odjednom.

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

Kao što možete vidjeti, možete proći nekoliko naredbi odjednom u jednom bloku, smjestiti njihove rezultate izvršenja na nekoliko računala u varijablu, a zatim ih obraditi na radnoj stanici koristeći Windows PowerShell mogućnosti rukovanja objektima.

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

New-PSSession cmdlet stvara sesije na udaljenim računalima, pokazivači na koje se mogu smjestiti u varijablu, a zatim proslijediti kao argument Invoke-Commandu za izvršavanje naredbi na nekoliko računala odjednom, u postojanom okruženju. Na snimci zaslona možete vidjeti primjer gdje izvršavam niz naredbi na nekoliko računala odjednom s popisa c:\computers.txt.

Proxy

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

Ljudi najčešće rješavaju takve probleme pomoću uslužnih programa poput cpau.exe (pogledajte veze) koji stvaraju datoteku s šifriranom lozinkom administrativnog računa koja vam omogućuje pokretanje određenog programa. Međutim, problem je u tome što će je uslužni program morati dešifrirati prije pokretanja programa, iako je lozinka šifrirana. U skladu s tim, korisnik može koristiti uslužni program koji ponavlja algoritam za dešifriranje zaporke i saznati ga, kako bi ga zatim koristio za pokretanje drugih programa ili dobivanje dodatnih privilegija. U praksi je to, naravno, prilično teško za obične korisnike koji nemaju posebna znanja, ali, ipak, sasvim je moguće. Još jednom ću pojasniti da to nije problem pojedine komunalne usluge, već problem ovakvog pristupa općenito.

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

Da biste izbjegli te probleme, ali ipak omogućili izvršenje određene naredbe, može se koristiti tehnika koja se naziva "proxying".

Radi na sljedeći način. Na računalu je stalno pokrenuta skripta s visokim privilegijama. Na primjer, u našem slučaju, pokrenut će se s računa koji ima administratorska prava na poslužitelju datoteka. Na signal korisnika izvršit će jednu unaprijed definiranu naredbu. U ovom primjeru zatvorite sve datoteke otvorene preko mreže.

Da bismo organizirali ovaj sustav, postavit ćemo na poslužitelj, na primjer, u mapu c:\scripts\, batch datoteke Server.cmd i Action.cmd .

Ispis #4 - Server.cmd (Windows batch)

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

Popis #5 - Action.cmd (Windows Batch)

za /f "skip=4 tokens=1" %%a u ('net datoteke') do net datoteke %%a /close
Izlaz

Server.cmd će čekati znak od korisnika (stvaranje datoteke u određeno mjesto), a nakon primitka pokrenite datoteku s naredbama - Action.cmd. Naravno, korisnici ne bi trebali imati pristup ovoj mapi. Automatsko pokretanje Server.cmd pri pokretanju računala može se organizirati jednostavnim stvaranjem odgovarajućeg zadatka u planeru:

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

Nakon parametra /ru naznačen je račun pod kojim će se skripta izvršavati (u našem slučaju ima administratorska prava na poslužitelju), budući da lozinka nije navedena nakon parametra /rp - bit će zatražena prilikom kreiranja zadatak. Opcija /sc vam omogućuje da odredite kada će se skripta pokrenuti, u našem slučaju, kada je računalo uključeno. Pa, /tn i /tr vam omogućuju da odredite naziv zadatka i izvršnu datoteku.

Sada, kako bi korisnik signalizirao skriptu, stvorit ćemo mapu c:\commandShare i učiniti je dostupnom na mreži. Samo korisnici koji će pokrenuti naredbu trebaju imati pristup za pisanje u ovu mapu.

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

Ispis #6 - Run.cmd (Windows Batch)

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

Kada se izvrši, u ime korisnika, kreirat će se datoteka \\server\commandShare\trigger.txt. Skripta Server.cmd, nakon što to primijeti, pokrenut će datoteku Action.cmd sa svojim privilegijama, dodati unos u datoteku c:\scripts\log.txt o trenutnom vremenu, a zatim izbrisati trigger.txt kako ne bi ponovno izvršiti naredbu do sljedećeg signala korisnika.

Skripta Server.cmd koristi uslužni program Sleep.exe za pauziranje izvršenja skripte na vremensko razdoblje navedeno u sekundama. Nije uključen u operativni sustav, ali se može preuzeti iz Resource Kit Tools (pogledajte veze) i jednostavno kopirati na bilo koje računalo.

Koristan

Odlučili ste učiti strani jezik? kućni učitelj Engleski jezikće vam pomoći s ovim. Tamo također možete vježbati s drugim korisnicima.

Jedan od najpopularnijih zadataka za administratore sustava je pokretanje naredbe na udaljenom računalu bez napuštanja svog mjesta. Ovo može biti potrebno za instaliranje programa ili uslužnog programa, promjenu nekih postavki ili bilo što drugo. I naravno, rijetko je to samo jedno računalo, češće se naredba mora izvršiti na više radnih stanica ili poslužitelja.

Budući da je ovaj problem popularan, postoji mnogo načina za njegovo rješavanje. Počevši od grupnih pravila (koja mogu koristiti skripte za prijavu ili pokretanje u tu svrhu), pa sve do moćnih sustava upravljanja kao što su System Center Essentials ili System Center Configuration Manager. Ali u ovom članku želim razmotriti metode koje su odmah dostupne iz naredbenog retka ili datoteka skripti, a također ne zahtijevaju predinstalaciju agenata i druge frke. Međutim, naravno postoje neki preduvjeti. Na primjer, morate imati administrativne ovlasti na računalu na kojem želite pokrenuti naredbu (osim za "proxy" scenarij, ali o tome kasnije).

Psexec.exe

Jedan od mojih omiljenih načina za obavljanje ovog zadatka je PsExec.exe uslužni program naredbenog retka koji je napisao Mark Russinovich, a koji možete besplatno preuzeti s web stranice Windows SysInternals. Poveznicu na nju možete pronaći na kraju članka. Ne zahtijeva instalaciju na sustavu, možete ga jednostavno kopirati u jednu od mapa sadržanih u varijabli okruženja %path% i pozvati ga iz bilo koje ljuske naredbenog retka: Cmd ili PowerShell.

Korištenje PsExeca je vrlo jednostavno. Na primjer, da pokrenete ipconfig /flushdns na glavnom računalu, samo pokrenite sljedeću naredbu:

psexec \\main ipconfig /flushdns

Naredba ipconfig pokrenut će se na glavnom računalu pod vašim vjerodajnicama. Kada ipconfig završi, sav tekstualni izlaz bit će poslan na vaše računalo, plus izlazni kod naredbe (kôd greške) bit će vraćen. Ako je naredba bila uspješna, bit će 0.


Naravno, mogućnosti PsExeca tu ne prestaju. Pozivanjem uslužnog programa bez parametara možete vidjeti druge dostupne opcije. Usredotočit ću se na samo neke od njih.

Ključ -d govori PsExecu da nije potrebno čekati izvršenje naredbe, već ju samo pokrenuti i zaboraviti. U ovom slučaju nećemo primiti izlazne podatke iz uslužnog programa konzole, ali ćemo moći pokrenuti druge bez čekanja da prethodna naredba završi. Ovo je vrlo korisno ako trebate pokrenuti, na primjer, instalacijski program na više računala.

Prema zadanim postavkama, PsExec izvršava naredbe u prikrivenom načinu rada, to jest, prozori ili dijalozi neće biti prikazani na sustavu gdje se naredba 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 želite prikazati prozore ili ga ne možete odrediti, tada će sučelje biti prikazano u sesiji konzole.

Dakle, da biste prikazali prozor s informacijama o verziji operativnog sustava na glavnom računalu, trebali biste pokrenuti PsExec ovako:

psexec -i \\glavni winver.exe

Ako želite izvršiti naredbu na nekoliko računala odjednom, trebat će vam mogućnost čitanja njihovih imena iz tekstualne datoteke popisa.

psexec @c:\comps.txt systeminfo.exe

Pa, jedna od najkorisnijih značajki PsExeca je mogućnost interaktivnog preusmjeravanja ulaza/izlaza između računala, što nam omogućuje pokretanje, na primjer, cmd.exe na udaljenom poslužitelju, davanje naredbi i dobivanje rezultata na lokalnom Računalo.


Kako radi Psexec?

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 raspakira ovaj resurs u skrivenu administrativnu dijeljenu mapu na udaljenom računalu, u datoteku: \\NazivRačunala\Admin$\system32\psexesvc.exe. Ako ste s prekidačem -c označili da želite kopirati izvršne datoteke u ovaj sustav, one će također biti kopirane u ovu mapu.

Nakon što su pripremni koraci dovršeni, PsExec instalira i pokreće uslugu pomoću Windows API-ja za upravljanje uslugama. Nakon što se PSEXESVC pokrene, stvara se nekoliko kanala između njega i PsExeca za prijenos podataka (ulazne naredbe, rezultati itd.). Kada završi, PsExec zaustavlja uslugu i uklanja je s ciljnog računala.

Windows Management Instrumentation (WMI)

Sljedeći način implementacije ovog popularnog zadatka o kojem želim govoriti je korištenje Windows Management Instrumentation. WMI je prisutan u svim Microsoft operativnim sustavima od Windows 2000, a čak i na Windows 9x može se instalirati iz posebnog paketa. WMI je omogućen prema zadanim postavkama i ne zahtijeva nikakvu dodatnu konfiguraciju. Za njegovu upotrebu dovoljna su administratorska prava i dopušten DCOM protokol na vatrozidu. WMI nudi mnoštvo opcija za upravljanje sustavima, 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 to se radi ovako:

$Računalo = "glavno"
$Command = "cmd.exe /c systeminfo.exe >
("\\$Računalo\root\cimv2:Win32_Process").create($Command)

Ovdje sam naveo cmd.exe kao proces koji treba pokrenuti i već sam mu proslijedio potrebnu naredbu kao argumente. Ovo je neophodno ako trebate koristiti varijable okruženja udaljenog računala ili ugrađene cmd.exe izjave 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čunalo koje još nema instaliran PowerShell, ovu WMI metodu možete pozvati i iz VBScript skripte. Na primjer ovako:

Popis #1 - Pokretanje procesa pomoću WMI (VBScript)

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

Ali puno je lakše koristiti uslužni program naredbenog retka wmic.exe, koji pruža prilično prikladno sučelje za rad s WMI-jem i uključen je u operacijske sustave počevši od Windows XP. U njemu, za pokretanje, na primjer, kalkulatora na glavnom računalu, samo pokrenite sljedeću naredbu:

wmic /node:poziv glavnog procesa create calc.exe

Naravno, mogućnosti WMI-ja nisu ograničene samo na pokretanje procesa. Ako ste zainteresirani saznati više o ovoj tehnologiji, preporučujem da pročitate članke Konstantina Leontieva o WMI-ju, poveznice na koje možete pronaći na kraju članka.

WSH udaljeno skriptiranje

Da, čudno, Windows Script Host također ima mogućnost pokretanja skripti na drugim računalima. Istina, ova funkcija nije dobila veliku popularnost, a najvjerojatnije zbog činjenice da zahtijeva previše pripremnih aktivnosti, a zauzvrat pruža vrlo malo mogućnosti. Ali svejedno ću govoriti o ovoj metodi jer bi mogla dobro doći.

Dakle, da bismo pokrenuli skriptu na drugom računalu koristeći WSH, moramo učiniti sljedeće:

    Administratorska prava na udaljenom računalu. To se podrazumijeva i potrebno je za gotovo svaku drugu metodu pokretanja navedenu u ovom članku.

    Omogućite WSH Remote Scripting stvaranjem string parametra Remote jednakog "1" u registru sustava u ključu registra HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings

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

    Ako se na računalima koristi vatrozid, on mora omogućiti pristup DCOM-u. Štoviše, to se mora učiniti ne samo na upravljanom računalu, već i na onom s kojeg želite pokrenuti skriptu.

    Na Windows XP sustavima sa servisnim paketom 2 i novijim, morate promijeniti DCOM sigurnosne postavke. To se može učiniti pomoću pravila grupe. U čvoru Konfiguracija računala \ Windows postavke \ Sigurnosne postavke \ Lokalna pravila \ Sigurnosne opcije postavite dopuštenja na sljedeći način:

    1. DCOM: Ograničenja pristupa stroju u sintaksi Sigurnosnog deskriptorskog jezika (SDDL).
      Dodijelite dopuštenja Anonimna prijava i Svi grupama Dopusti lokalni i Dopusti udaljeni pristup

      DCOM: Ograničenja pokretanja stroja u sintaksi jezika definicije sigurnosnog deskriptora (SDDL).
      Dodijelite dopuštenja grupi administratora Dopusti lokalno pokretanje, Dopusti daljinsko pokretanje, Dopusti lokalnu aktivaciju, Dopusti daljinsku aktivaciju
      Grupa Svi - Dopusti lokalno pokretanje, Dopusti lokalnu aktivaciju

Pa, nakon svih ovih postupaka, možete pokušati pokrenuti svoju skriptu na drugom računalu.

Primjer skripte koja koristi ovu tehnologiju:

Ispis #2 - WSH udaljeno skriptiranje (VBScript)

Postavi objController = CreateObject("WshController")
Postavite objRemoteScript = objController.CreateScript("C:\test.vbs", "PC5")WScript.ConnectObject objRemoteScript, "remote_"
objRemoteScript.Izvrši
Učini Dok objRemoteScript.Status<> 1
WScript.Sleep 1000
petlja
MsgBox "Skripta dovršena"
Sub remote_Error
Dim objError
Postavite objError = objRemoteScript.Error
WScript.Echo "Pogreška - Redak: " & objError.Line & _
", Char: " & objError.Character & vbCrLf & _
"Opis: " & objError.Description
Izlaz iz WScripta -1
kraj sub

U drugom retku, kao parametri za CreateScript funkciju, naznačen je put do datoteke skripte koja će se izvršiti na udaljenom računalu i stvarni naziv ovog računala.

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

Planer zadataka

Task Scheduler se može kontrolirati iz naredbenog retka pomoću dva pomoćna programa - at.exe i schtasks.exe. Oba ova pomoćna programa omogućuju vam da navedete naziv udaljenog računala za kreiranje posla i stoga vam omogućuju da riješite naš problem. Ali detaljno ćemo razmotriti samo schtasks.exe, budući da pruža mnogo više mogućnosti.

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

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

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

Još jedno korisno rješenje, čini mi se, je zakazati neku akciju za dnevno izvršenje i izbrisati zadatak tek kada se potvrdi njegov uspjeh. To jest, možete stvoriti jednostavnu batch datoteku koja prvo pokreće instalacijski program programa, čeka da završi i provjerava je li program uspješno instaliran. Ako je tako, uklanja zadatak iz planera na tom računalu. Primjer takve datoteke:

Popis #3 - Instalacija programa i potom brisanje zadatka (Windows Batch)

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

WinRM (WS upravljanje)

WinRM je Microsoftova implementacija otvorenog standarda DMTF (Distributed Management Task Force) koja omogućuje upravljanje sustavima korištenjem web usluga. Neću ulaziti u uređaj tehnologije, već ću samo ukratko opisati što je potrebno za njegovu upotrebu.

WinRM verzija 1 i novija uključena je u operativne sustave počevši od Windows Vista i Windows Server 2008. Za Windows XP i Windows Server 2003 možete instalirati WinRM kao zasebni paket (pogledajte veze).

Kako biste brzo konfigurirali računalo za povezivanje s njim pomoću standardnih portova i dopuštanje povezivanja s administrativnim računima, samo pokrenite naredbu:

winrm quickconfig

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

winrm pomoć konfiguracija

Ako upravljano računalo pokreće web poslužitelj, WinRM ga neće ni na koji način ometati, iako prema zadanim postavkama koristi standardne HTTP priključke. Presretat će samo veze namijenjene posebno za njega.

Naravno, ovu naredbu ne morate pokretati ručno na svakom računalu kojim želite upravljati. Sve potrebne postavke mogu se lako izvršiti korištenjem pravila grupe. Za ovo vam je potrebno:

  1. Postavite uslugu WinRM (Windows Remote Management) da se automatski pokrene
  2. Konfigurirajte stavku pravila grupe Konfiguracija računala \ Administrativni predlošci \ Windows komponente \ Windows daljinsko upravljanje (WinRM) \ WinRM usluga \ Dopusti automatsku konfiguraciju slušatelja. Ovdje morate navesti raspone IP adresa s kojih su veze dopuštene.
  3. Naravno, također ćete morati dopustiti veze na odgovarajućim priključcima (80 prema zadanim postavkama) u Windows vatrozidu.

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

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

winrs -r: Core ver.exe

Budući da winrs već koristi cmd.exe kao udaljenu ljusku, možete jednostavno pristupiti udaljenim varijablama okruženja u naredbama ili koristiti druge ugrađene cmd.exe naredbe:

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

Kao i PsExec, uslužni program winrs omogućuje vam otvaranje interaktivne sesije na udaljenom računalu:

winrs -r:glavni cmd.exe

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

Windows PowerShell 2.0 Remoting

Iako je druga verzija Windows PowerShell-a još uvijek u beta testiranju u vrijeme pisanja ovog teksta, o njegovim mogućnostima u području daljinskog izvršavanja naredbi svakako vrijedi razgovarati sada. Možete ga sami isprobati preuzimanjem pretpregledne verzije (pogledajte veze) ili kao dio beta verzije sustava Windows 7 ili Windows Server 2008 R2.

Infrastruktura PowerShell Remoting temelji se na WinRM verziji 2.0, te stoga nasljeđuje sve prednosti ove tehnologije, poput enkripcije prenesenih podataka i mogućnosti rada na standardnim HTTP/HTTPS portovima. Ali zahvaljujući bogatstvu jezika Windows PowerShell i njegovoj mogućnosti rada s objektima, dobivamo još više mogućnosti. WinRM2.0 također je trenutačno u beta verziji i dostupan je samo za preuzimanje na sustavima Windows Vista i Windows 2008. Bit će izvorno ugrađen u sustave Windows 7 i Windows Server 2008R2, zajedno s PowerShell 2.0.

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

Prije nego što u potpunosti iskoristite ove prednosti, PowerShell Remoting mora biti omogućen i na upravitelju i na upravljanom računalu. To je lako učiniti pokretanjem cmdleta (Windows PowerShell naredba) Enable-PSRemoting. Štoviše, ako dodate tipku -Force, tada se neće tražiti potvrda. Ova cmdlet će pozvati winrs quickconfig ako je potrebno i stvorit će iznimke u vatrozidu Windowsa, tako da nije potrebna nikakva daljnja radnja.

Zatim možete jednostavno izvršavati naredbe na drugim računalima koristeći cmdlet Invoke-Command (ili njegov alias icm):

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

Naravno, naredba se može staviti u varijablu unaprijed, a za parametar -ComputerName odrediti imena ne jednog, već nekoliko računala odjednom. Sljedeći slijed omogućuje prikaz verzije datoteke Explorer.exe s tri računala odjednom.

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


Kao što možete vidjeti, možete proći nekoliko naredbi odjednom u jednom bloku, smjestiti njihove rezultate izvršenja na nekoliko računala u varijablu, a zatim ih obraditi na radnoj stanici koristeći Windows PowerShell mogućnosti rukovanja objektima.

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

New-PSSession cmdlet stvara sesije na udaljenim računalima, pokazivači na koje se mogu smjestiti u varijablu, a zatim proslijediti kao argument Invoke-Commandu za izvršavanje naredbi na nekoliko računala odjednom, u postojanom okruženju. Na snimci zaslona možete vidjeti primjer gdje izvršavam niz naredbi na nekoliko računala odjednom s popisa c:\computers.txt.


Proxy

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

Ljudi najčešće rješavaju takve probleme pomoću uslužnih programa poput cpau.exe (pogledajte veze) koji stvaraju datoteku s šifriranom lozinkom administrativnog računa koja vam omogućuje pokretanje određenog programa. Međutim, problem je u tome što će je uslužni program morati dešifrirati prije pokretanja programa, iako je lozinka šifrirana. U skladu s tim, korisnik može koristiti uslužni program koji ponavlja algoritam za dešifriranje zaporke i saznati ga, kako bi ga zatim koristio za pokretanje drugih programa ili dobivanje dodatnih privilegija. U praksi je to, naravno, prilično teško za obične korisnike koji nemaju posebna znanja, ali, ipak, sasvim je moguće. Još jednom ću pojasniti da to nije problem pojedine komunalne usluge, već problem ovakvog pristupa općenito.

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

Kako biste izbjegli ove probleme, ali ipak dopustili izvođenje određene naredbe, može se koristiti tehnika koja se naziva "proxying".

Radi na sljedeći način. Na računalu je stalno pokrenuta skripta s visokim privilegijama. Na primjer, u našem slučaju, pokrenut će se s računa koji ima administratorska prava na poslužitelju datoteka. Na signal korisnika izvršit će jednu unaprijed definiranu naredbu. U ovom primjeru zatvorite sve datoteke otvorene preko mreže.

Da bismo organizirali ovaj sustav, postavit ćemo na poslužitelj, na primjer, u mapu c:\scripts\, batch datoteke Server.cmd i Action.cmd .

Ispis #4 - Server.cmd (Windows batch)

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

Popis #5 - Action.cmd (Windows Batch)

za /f "skip=4 tokens=1" %%a u ('net datoteke') do net datoteke %%a /close
Izlaz

Server.cmd će čekati znak korisnika (kreirati datoteku na određenom mjestu), a nakon što ga primi, pokrenuti datoteku s naredbama - Action.cmd. Naravno, korisnici ne bi trebali imati pristup ovoj mapi. Automatsko pokretanje Server.cmd pri pokretanju računala može se organizirati jednostavnim stvaranjem odgovarajućeg zadatka u planeru:

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

Nakon parametra /ru naznačen je račun pod kojim će se skripta izvršavati (u našem slučaju ima administratorska prava na poslužitelju), budući da lozinka nije navedena nakon parametra /rp - bit će zatražena prilikom kreiranja zadatak. Opcija /sc vam omogućuje da odredite kada će se skripta pokrenuti, u našem slučaju, kada je računalo uključeno. Pa, /tn i /tr vam omogućuju da odredite naziv zadatka i izvršnu datoteku.

Sada, kako bi korisnik signalizirao skriptu, stvorit ćemo mapu c:\commandShare i učiniti je dostupnom na mreži. Samo korisnici koji će pokrenuti naredbu trebaju imati pristup za pisanje u ovu mapu.

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

Ispis #6 - Run.cmd (Windows Batch)

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

Kada se izvrši, u ime korisnika, kreirat će se datoteka \\server\commandShare\trigger.txt. Skripta Server.cmd, nakon što to primijeti, pokrenut će datoteku Action.cmd sa svojim privilegijama, dodati unos u datoteku c:\scripts\log.txt o trenutnom vremenu, a zatim izbrisati trigger.txt kako ne bi ponovno izvršiti naredbu do sljedećeg signala korisnika.

Skripta Server.cmd koristi uslužni program Sleep.exe za pauziranje izvršenja skripte na vremensko razdoblje navedeno u sekundama. Nije uključen u operativni sustav, ali se može preuzeti iz Resource Kit Tools (pogledajte veze) i jednostavno kopirati na bilo koje računalo.

Vjerojatno ćete htjeti iskoristiti podršku za više monitora ugrađenu u alat Windows Vista (Remote Desktop). Ova značajka omogućuje vam da proširite radnu površinu udaljenog računala na sve monitore povezane s lokalnim sustavom.

Međutim, nije ga lako pronaći - ne pristupa mu se iz grafičkog korisničkog sučelja alata, već iz naredbenog retka.

Ograničenja

Podrška za više monitora pri povezivanju s udaljenom radnom površinom vrlo je zgodna značajka, ali ima dva ograničenja:

1. Svi monitori spojeni na sustav moraju imati istu rezoluciju.

2. Razlučivost zaslona svih monitora, uključujući one na udaljenom sustavu, ne smije prelaziti 4096 x 2048 piksela.

Naredbeni redak

Da biste pokrenuli vezu s udaljenom radnom površinom s podrškom za više monitora, trebate otvoriti naredbeni redak i unijeti sljedeću naredbu:


Nakon toga će se otvoriti standardni dijaloški okvir Remote Desktop Connection u kojem trebate konfigurirati postavke veze (vidi sliku A).

Slika A Prilikom pokretanja veze s udaljenom radnom površinom iz naredbenog retka, postavke veze trebat će se ispuniti ručno.

Nakon što se veza uspostavi, radna površina udaljenog sustava pojavit će se na svim monitorima spojenim na lokalni sustav. Ako trebate i lokalnu i udaljenu radnu površinu, možete ograničiti veličinu potonje na jedan monitor klikom na gumb "Vrati dolje" u prozoru udaljene radne površine. Za to možete koristiti i tipkovničke prečace.

Nakon što se prozor udaljene radne površine pojavi na monitoru, može se razvući pomoću miša da ispuni cijeli zaslon. Imajte na umu da ćete, ako smanjite veličinu rastegnutog prozora udaljene radne površine, morati koristiti vodoravne i okomite trake za pomicanje kako biste vidjeli cijeli zaslon, kao što je prikazano na sl. B. Ali uvijek se može vratiti klikom na gumb Maksimiziraj.



Slika B Kada smanjite veličinu rastegnutog prozora udaljene radne površine, morate koristiti vodoravnu i okomitu traku za pomicanje kako biste vidjeli cijeli zaslon.

Stvorite prečac

Naravno, pokretanje veze s udaljenom radnom površinom iz naredbenog retka svaki put nije baš zgodno. Ako već imate spremljenu datoteku postavki RDP veze s udaljenom radnom površinom, možete stvoriti standardni Windows prečac za povezivanje pomoću ove datoteke i opcija naredbenog retka.

Klik desni klik mišem bilo gdje na radnoj površini i odaberite New | Prečac" (Novo | Prečac). U dijaloškom okviru čarobnjaka Stvori prečac unesite naredbu mstsc /span i put 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" (Dalje), dodijelite prečac prikladno ime, na primjer, "Saturn - Connect. s nekoliko monitori" i kliknite "Završi".



Slika C Možete stvoriti standardni Windows prečac za povezivanje pomoću RDP datoteke i opcija naredbenog retka.

Sada, koristeći ovaj prečac, možete se povezati s udaljenim računalom koristeći sve dostupne monitore. Naravno, pri otvaranju više prozora razvučena radna površina će se ponašati drugačije nego pri radu s više monitora na lokalnom sustavu – morat ćete pokazati maštu i promijeniti veličinu prozora tako da svi udobno stanu na udaljenu radnu površinu.

Što misliš?

Koliko je monitora spojeno na vaše računalo? Koliko često koristite vezu s udaljenom radnom površinom? Hoćete li koristiti podršku za više monitora Vistine veze s udaljenom radnom površinom? Podijelite svoje mišljenje s nama u komentarima!