Interacțiunea de la distanță în mediul înconjurător 2

Versiunea Windows PowerShell 2.0 implementează un mecanism alternativ pentru conectarea la computerele la distanță, numit remoting (interacțiune de la distanță). Acest mecanism utilizează serviciul Windows Remote Management (Windows Remote Management Service) (Windows Remote Management, WinRM). Acesta oferă conexiune la un computer la distanță, precum și lansarea de comenzi care sunt executate pe acest computer la distanță

Infrastructura IT pentru întreprinderea dvs.

Dezvoltare PowerShell 1.0 shell a fost un progres real în dezvoltarea XP echipamentul de comandă și automatizare pentru Windows, precum și versiunile ulterioare ale platformei Windows. Bazat pe platformă. NET Framework PowerShell 1.0 tehnologie include o structură unificată comenzi (cmdleturile), este dotat cu instrumente puternice încorporate în formatul de ieșire și oferă o creștere semnificativă a disponibilității altor tehnologii, și mai presus de toate - Windows Management Instrumentation (WMI). Cu toate acestea, deși unele comenzi compuse PowerShell 1.0 și obiecte. NET se poate conecta la computerele la distanță, această funcție fiind implementată diferențiat, în funcție de cazul specific. Comenzile care acceptă conexiuni la distanță au parametrul -ComputerName; În plus, la stabilirea conexiunilor, aceștia utilizează fie proceduri de apel la distanță (RPC), fie modele DCOM.

În multe situații, RPC și DCOM bine cu sarcini de management, dar, atunci când efectuează proceduri de diagnosticare, precum și în identificarea cauzelor problemelor au uneori probleme. De exemplu, comanda Get-Serviciul poate citi serviciile de date de la un computer la distanță folosind parametrul -ComputerName, dar această echipă nu are nici o opțiune -Credential, și, prin urmare, pentru performanțele sale ar trebui să se înregistreze un cont care are permisiunea de a accesa sistemul de la distanță.

Însă deja în versiunea Windows PowerShell 2.0 a fost implementat un mecanism alternativ pentru conectarea la computerele la distanță, numit remoting (interacțiune de la distanță). Acest mecanism utilizează serviciul Windows Remote Management (Windows Remote Management Service) (Windows Remote Management, WinRM). Oferă conectivitate la computerul la distanță, precum și comenzi care rulează pe acest computer la distanță. Voi explica ceea ce sa spus cu un exemplu. Aplicațiile Remote Desktop Connection se referă la interfața grafică a utilizatorului în același mod ca și interacțiunea de la distanță cu linia de comandă a shell-ului PowerShell. Când executați o comandă compusă utilizând mecanismul de interacțiune de la distanță, comanda rulează de fapt pe computerul la distanță, dar puteți vedea rezultatele pe mașina locală.

De unde pot obține Windows PowerShell 2.0?

Activarea funcției de interacțiune la distanță

Pentru ca computerul să stabilească conexiuni la sistemele la distanță pe care este instalată shell-ul PowerShell, trebuie îndeplinite următoarele condiții.

Dacă computerul nu acceptă conexiuni din shell-urile PowerShell instalate pe computere la distanță, aceste condiții nu sunt necesare.

Rularea unei comenzi pe un computer la distanță

Cea mai ușoară modalitate de a vă conecta la un mediu PowerShell de pe un computer la distanță este să utilizați comanda Enter-PSSession. În mod implicit, această comandă este executată cu parametrul -ComputerName, astfel încât atunci când o tastați din tastatură, acest parametru poate fi omis. De exemplu, pentru a vă conecta la un computer la distanță numit rigel, trebuie să-l introduceți din tastatură

Vă rugăm să rețineți: pentru exhaustivitate, includ o invitație la text. Nu este nevoie să introduceți o invitație ca parte a echipei.

După ce introduceți o sesiune la distanță, se modifică sintaxa solicitării PowerShell. Acum va include numele computerului la distanță cuprins în paranteze pătrate; aceasta înseamnă că ați conectat la un computer la distanță. În acest caz, invitația va arăta astfel:

După ce ați stabilit o conexiune la distanță, toate comenzile pe care le-ați introdus pe linia de comandă vor fi executate pe aparatul de la distanță. Deci, dacă tastați comanda

comanda Get-ChildItem va fi executată pe mașina de la distanță. Ieșirea va conține numele fișierelor și folderelor stocate în unitatea C a computerului la distanță. Pentru a termina o sesiune de interacțiune la distanță, utilizați comanda Exit-PSSession

Rularea blocului script (Scriptblock) pe computerul la distanță

Interacțiunea de la distanță folosind PowerShell vă permite să executați un bloc de script pe un computer la distanță sau scriptblock (adică un bloc de cod PowerShell inclus în bretele). Pentru aceasta, utilizați comanda Invoke-Command cu parametrul -ComputerName. De exemplu, în comanda afișată pe ecranul 1, am folosit comanda Invoke-Command pentru a rula Get-ChildItem pe un computer la distanță. În timp ce vizualizați ecranul 1, observați că nu am folosit comanda Enter-PSSession pentru a vă conecta la computerul de la distanță înainte de a porni blocul de script. Comenzile Enter-PSSession și Invoke-Command sunt două metode diferite de interacțiune de la distanță.

Interacțiunea de la distanță în mediul înconjurător 2

Ecranul 1. Executarea blocului de script de pe computerul la distanță

Primul parametru al comenzii Invoke-Command este parametrul -ScriptBlock; indică codul pe care urmează să îl executați. Pe ecranul 1, am omis numele parametrului -ScriptBlock, deoarece este opțional. Parametrul -ComputerName conține numele computerului la distanță. După cum puteți vedea în ieșirea comenzii Get-ChildItem, mediul PowerShell pentru comoditatea operatorului specifică chiar și numele computerului la distanță în coloana PSComputerName a ieșirii.

Executarea unui bloc de script pe mai multe computere la distanță

Blocul script poate fi executat pe mai multe computere la distanță. Aceasta se numește configurație unu-la-multe sau o desfășurare a ventilatorului. Pe ecranul 1, parametrul -ComputerName al comenzii Invoke-Command conține un nume, dar puteți include mai multe nume de computer în el. Deci, echipa

Asigură executarea comenzii Get-ChildItem pe două computere la distanță. În textul articolului, această comandă este împărțită în mai multe linii, dar în consolă PowerShell trebuie introdusă într-o singură linie. Același lucru este valabil și pentru alte comenzi, împărțite în mai multe linii. La fel ca pe ecranul 1, coloana PSComputerName din ieșire va conține numele computerelor.

Executarea blocului de script în fundal

Mediul PowerShell 2.0 face posibilă îndeplinirea sarcinilor de fundal, adică operatorul poate executa comanda în fundal. Această caracteristică este utilă atunci când executați comenzi care necesită mult timp.

Pentru a începe o lucrare de fundal pe computerul local, puteți utiliza comanda Start-Job. Dar trebuie să spun că această comandă nu are parametrul -ComputerName, ceea ce înseamnă că nu poate fi folosit pentru a efectua o lucrare de fundal pe o mașină la distanță. În schimb, trebuie să executați comanda Invoke-Command cu opțiunea -AsJob. Astfel, comanda de sus a ecranului 2 inițiază execuția blocului de script ca o lucrare de fundal pe computerul titanic la distanță. După ce am introdus această comandă, promptul a apărut imediat pe ecran: shell-ul PowerShell a trimis blocul de script pentru a rula pe computerul la distanță și apoi mi-a întors controlul. Avertismentul spune că comanda executată nu se potrivea în fereastra consolei și, prin urmare, nu a fost inclusă în datele de ieșire. Dacă fereastra consolei a fost mai largă, instrumentul de formatare PowerShell ar include comanda din lista de ieșire. În coloanele Id și Denumire se specifică lucrarea (identificatorul său și numele prietenos), iar coloana Statul indică starea lucrării: executarea, întreruperea sau finalizarea. Coloana HasMoreData conține informații care indică faptul că au fost extrase toate datele referitoare la o anumită lucrare sau că lucrarea conține mai multe informații care trebuie extrase.

Interacțiunea de la distanță în mediul înconjurător 2

Ecranul 2. Executarea blocului script în fundal de pe computerul la distanță

Pentru a determina dacă executarea de locuri de muncă lot este completă, puteți efectua o comanda Get-Iov, ca a doua echipa de pe ecran 2. În cazul în care nu utilizați nici un parametru, Get-Job verifică starea tuturor locurilor de muncă a început în sesiunea curentă. Dacă executați mai multe lucrări în același timp, puteți utiliza parametri precum -Id sau -Name pentru a indica lucrarea pe care doriți să o testați. Când lucrările de fundal sunt finalizate, coloana Statul de ieșire va fi setată la Finalizat.

Puteți utiliza comanda Recepție-Lucrare pentru a citi rezultatele lucrării de fundal. Această comandă, ca și comanda Get-Job, returnează ieșirea tuturor lucrărilor care au fost inițiate în timpul sesiunii curente, cu excepția cazului în care ați utilizat un parametru pentru a indica ce lucrare vă interesează. Deci, ultima echipa de pe ecran 2 include un parametru -id, ceea ce indică faptul că este necesar pentru a primi ieșirea din identificatorul de locuri de muncă 9. Am coborât numele parametrului -id, deoarece nu este obligatorie. Pe ecranul 3 sunt afișate ultimele rânduri de date de ieșire referitoare la lucrarea de fundal la distanță.

Interacțiunea de la distanță în mediul înconjurător 2

Ecranul 3. Exemplul rezultatelor executării unei lucrări de fundal pe un computer la distanță

Crearea sesiunilor PowerShell

Exemplele de mai sus arată cum să accesați promptul PowerShell de pe aparatul de la distanță și cum să executați comenzi pe computerele de la distanță. Dar nu am menționat încă că interacțiunea de la distanță este întotdeauna efectuată în contextul sesiunii. Sesiunea este, să zicem, sediul PowerShell. Când deschideți fereastra consolei PowerShell sau fereastra ISE (Integrated Scripting Environment) din PowerShell (ISE), creați o sesiune. Fără utilizarea instrumentelor de remoting, toate sesiunile sunt efectuate pe computerul local și nu depind una de cealaltă. În toate exemplele de interacțiune de la distanță de mai sus, sunt create sesiuni temporare, care se termină automat când interacțiunea de la distanță este terminată. În plus, este posibil să creați instanțe de sesiuni de interacțiune la distanță și să le reutilizați. Această abordare este mult mai eficientă atunci când aveți nevoie să accesați calculatoarele la distanță de mai multe ori.

Pentru a crea noi sesiuni, utilizați comanda New-PSSession cu parametrul -ComputerName. Numele acestui parametru în comenzi poate fi omis. Deci, echipa

și apăsați tasta Enter. Parametrul -Session al comenzii Invoke-Command suporta obiecte de sesiune create cu comanda New-PSSession, astfel incat sa puteti folosi o comanda similara cu urmatoarea:

Această comandă execută comanda Get-ChildItem pe mașinile phineas, ferb și pery, dar nu întrerupe conexiunile. Puteți adăuga parametrul -AsJob și executa comanda în fundal:

Apoi, puteți utiliza comenzile Get-Job și Receive-Job pentru a verifica starea lucrării și a obține rezultatele acesteia.

O nouă abordare a muncii

Bill Stewart ([email protected]) este administratorul de sistem și de rețea al Mortuarului Francez, New Mexico

Distribuiți materialul împreună cu colegii și prietenii

Articole similare