Powershell interacțiune de la distanță cu powershell 2

Acest articol detaliază subiectul interacțiunii la distanță utilizând PowerShell 2.0. În primul rând, trebuie să începem un serviciu prin care să fie implementată interacțiunea de la distanță.







Nume de stare DisplayName ------ ---- ----------- Oprire winrm Windows Remote Management (WS-Manag.

Solicităm numele tuturor furnizorilor conectați:
Get-PSProvider
După cum puteți vedea, acum avem un alt furnizor numit WSMan.
Alocarea nodurilor de încredere

În consola PowerShell 2.0, executați următoarele comenzi cu privilegii administrative:

Set-Locație -Path WSMan: Set-Locație -Path localhost \ client Get-ChildItem

remarcă
Rețineți că, în prima comandă, valoarea parametrului -Path este terminată de un colon, deoarece acesta este furnizorul.

Pe computerul pe care doriți să îl utilizați de la distanță, trebuie să specificați serverele cărora li se permite să se conecteze la această mașină. Astfel de servere sunt cunoscute ca "noduri de încredere". Astfel, dacă sunteți pe serverul "MyServer", înainte de a putea lucra de la distanță cu computerul "MyComputer", trebuie să configurați site-uri de încredere (TrustedHosts). Următoarea metodă de atribuire a site-urilor de încredere este utilizată atunci când computerul nu face parte dintr-un domeniu Active Directory. Dacă computerul face parte dintr-un domeniu Active Directory, setările TrustedHosts pot fi configurate prin intermediul politicii de grup.

Important!
Următoarea comandă nu va funcționa dacă directorul curent nu are instalat WSMan: \ localhost \ client (consultați apelul de comandă pe care l-am făcut mai sus).

Puteți rula o comandă dintr-un alt director, dar trebuie să specificați calea completă la TrustedHosts:

La cererea de confirmare, apăsați tasta "Y".

Pentru ca PowerShell să vadă modificările pe care le-am făcut în setările TrustedHosts, trebuie să reporniți serviciul WSMan. Aceasta se face folosind următoarea comandă:
Restart-Service winrm

O acțiune similară poate fi efectuată din sub DOS. Pornește comanda winrm. Veți vedea un ajutor general în comandă. Pentru a vedea valoarea curentă a TrustedHosts, executați următoarea comandă:

winrm obține winrm / config / client

și pentru a stabili valoarea - este necesar să se execute:

winrm set winrm / config / client / @

Pentru a termina sesiunea de lucru la distanță, executați următoarea comandă:

Nou-PSSession-computername testMachine2 Get-PSSession

Puteți încheia această sesiune în felul următor:

Dacă doriți să testați o operație la distanță, dar nu aveți oa doua mașină, creați o "conexiune la distanță" a computerului pentru dvs. De exemplu, dacă aparatul dvs. se numește "MyMachine", încercați acest lucru:

New-PSSession -computername MyMachine

Poate părea ciudat și nu logic, dar în acest fel puteți încerca în continuare să lucrați la distanță în PowerShell 2.0.

Lucrul într-o sesiune remote PowerShell 2.0
După ce creați o conexiune la distanță, puteți organiza echipe transportoare le execută în consola PowerShell 2.0, dar acestea vor fi executate pe masina de la distanta ca si cum esti in spatele tastaturii ei și tastați comanda acolo, și nu aici. De exemplu, executați această comandă și examinați rezultatul funcționării acesteia:







Set-Location c: \ | Get-childitem

Având în vedere că obiectivul principal al acestui ghid este de a vă ajuta să creați o conexiune la distanță sesiune PowerShell 2.0 și pentru a arăta cât de aproape, atunci te va trebui să decidă ce acțiuni pe care doriți să efectuați în timpul unei conexiuni la distanță.

remarcă
Dacă vă pare că o comandă la distanță nu funcționează pentru dvs., încercați mai întâi mașina dvs. locală.

Odată ce conexiunea la distanță veți câștiga, imediat vă oferă posibilitatea de a utiliza PowerShell 2.0 pentru a gestiona computerele conectate la rețea. Acum puteți rula scripturi pe alte mașini. În multe PowerShell 2.0 cmdleturile suportă opțiunea „-computerName“, dar conexiunea la distanță vă permite să utilizați familia PSSession de comandă, precum și cauza Invoke-comandă (de exemplu, puteți face orice doriți).

Depanarea PowerShell 2.0 Remote Work

O problemă tipică este eroarea "Accesul este refuzat" (accesul este refuzat).

soluţie:
• Porniți PowerShell 2.0 cu drepturi de administrator. Încercați ambele mașini (pe cea la care vă conectați și pe cea la care vă conectați) setați setarea "TrustedHosts" la * (asterisc). Doar nu uitați că această opțiune permite conexiuni de oriunde.
• Nu uitați să reporniți serviciul WinRm, altfel modificările efectuate pentru "TrustedHosts" nu vor avea efect. Pentru a reporni serviciul, executați următoarea comandă în consola PowerShell 2.0: Restart-Service WinRm
• În plus, aveți grijă și nu confundați numele furnizorului WSMan cu numele serviciului WinRm.
• Un alt sfat ciudat, dar uneori util: Încercați să încercați din nou o conexiune la distanță. Este ciudat, dar este posibil să nu funcționeze la prima încercare, dar să lucreze cu a doua sau a treia. Ie trebuie să re-executați comanda: Enter-PSSession -computerName myOtherMachineName

Firewall-uri, PowerShell 2.0 și "Serverul rpc nu este disponibil" (serverul RPC nu este disponibil)
specialiști de securitate în groază să ridice mâinile lor pe o astfel de propunere, cu toate acestea, în cazul erorilor de mai sus, vă sugerez să dezactivați firewall-ul de pe ambele computere. Dacă dezactivarea va funcționa - e bine, atunci ai nevoie pentru a verifica implicarea porturile 135 și 445. Configurați aceste excepții de port în firewall - acesta va permite PowerShell 2.0 lucreze de la distanță în timp ce un firewall protejează computerul împotriva amenințărilor.

Două tipuri care sunt utilizate pentru lucrul la distanță în PowerShell 2.0
Este timpul să raportați că există două opțiuni de lucru la distanță în PowerShell 2.0.
Prima metodă este o variantă mai sofisticată, în care se folosesc cmdleturi, creând un canal stabil pentru a doua mașină. Numele acestor comenzi conțin cuvântul "PSSession" ca un substantiv (îmi amintesc că numele cmdlet-urilor sunt construite conform regulii "Verb-Noun"). Puteți obține o listă a acestor cmdleturi utilizând următoarea comandă:

Get-Command -un PSSession

Cea de-a doua cale este și forma mai canonică a muncii la distanță a PowerShell 2.0. Această metodă extinde pur și simplu comenzile locale, adăugând la acestea parametrul "-computerName", care indică computerul la distanță pe care doriți să efectuați operația. Ca rezultat, astfel de comenzi vor fi lansate pe o altă mașină din rețea:

Get-Process-computerName machine2

Lista de cmdleturi care pot fi folosite într-un mod atât de simplu (adică cele care au parametrul "-computerName") pot fi obținute cu această comandă:

Lista completă a cmdlet-urilor care pot lucra la a doua metodă poate fi obținută după cum urmează:

Sursa în limba engleză a informațiilor pe care tocmai le-am descris și puțin revizuite aici.

Mai departe voi arăta exemple mici de lucru la distanță:

# Creați o sesiune nouă pentru conectarea la o mașină la distanță $ s = New-PSSession -computername TestComputer

# Noi efectuăm acțiuni arbitrare pe mașina de la distanță, de exemplu - a se vedea conținutul directorului C:
Invocare-comandă-sesiune $ s -ScriptBlock

# Creați un director pe mașina de la distanță "% ProgramFiles% \ MyCompany \ MySoft"
Invocare-comandă-sesiune $ s -ScriptBlock

# Cu toate acestea, este mult mai convenabil să nu conduceți manual comenzi, dar rulați un script gata pe un computer la distanță:
Invocare-comandă-sesiune $ s -FilePath "\\ ServerDir \ Scripturi comune \ MyScript.ps1"

# Închiderea sesiunii
$ s | elimina-PSSession







Articole similare

Trimiteți-le prietenilor: