Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 10
  • Utilizarea Powershell pentru a executa comenzi comune de rețea. Ce este PowerShell? Obține ajutor cu concepte

Utilizarea Powershell pentru a executa comenzi comune de rețea. Ce este PowerShell? Obține ajutor cu concepte

Este posibil ca utilizatorii experimentați ai sistemului de operare Windows 10 să fi auzit de utilitarul pentru linia de comandă PowerShell. Poate fi familiar și celor cu experiență cu Windows 7 și 8.1. După ani de utilizare a aplicației de linie de comandă Windows și a fișierelor .bat, este timpul să cunoaștem un instrument mai puternic.

PowerShell este un plus valoros la lista de instrumente Windows, iar amploarea sa mare poate deranja unii utilizatori. Este un limbaj de scripting sau un shell de comandă? Nu vă faceți griji: în ciuda posibilităților vaste, oricine poate stăpâni PowerShell.

Pasul 1: instalare

În primul rând, avem nevoie de utilitarul PowerShell în sine. Dacă rulați Windows 10, aveți deja instalat PowerShell 5. Actualizarea Windows 10 Anniversary folosește versiunea 5.1, dar nu există nicio diferență vizibilă. Windows 8 și 8.1 folosesc PowerShell 4, care este, de asemenea, suficient. Instalarea PowerShell pe Windows 7 nu va fi o problemă, dar mai sunt câțiva pași suplimentari de urmat. În special, trebuie să instalați suplimentar .Net Framework. Puteți instala Windows Management Framework, care include PowerShell.

PowerShell are două interfețe. Utilizatorii avansați pot opta pentru o interfață grafică completă cunoscută sub numele de Integrated Scripting Environment (ISE). Pentru începători, cel mai bine este să utilizați consola PowerShell, o interfață text simplă în stil linie de comandă Windows sau chiar DOS 3.2.

Pentru a rula PowerShell ca administrator pe Windows 10, faceți clic pe butonul Start și derulați prin lista de aplicații la Windows PowerShell. În Windows 8.1, căutați Windows PowerShell în folderul System din Windows. În Windows 7, shell-ul se află în folderul Accesorii. Ca utilizator obișnuit, PowerShell poate fi lansat exact în același mod, folosind butonul stâng al mouse-ului în loc de cel drept.

Puteți utiliza căutarea pe orice versiune de Windows. Pentru ușurință în utilizare, puteți fixa PowerShell în bara de activități.

Pasul 2: Comenzi vechi Windows

Sintaxa comenzii Windows în PowerShell funcționează în mod obișnuit. De exemplu, CD modifică folderele, dir afișează o listă cu toate fișierele și folderele din folderul curent.

În funcție de modul în care porniți consola PowerShell, puteți începe de la c:\Windows\system32 sau în c :\Utilizatori\ . Exemplul din captura de ecran folosește comanda CD..(cu un spațiu) pentru a urca câte un nivel, apoi rulați comanda dir pentru a afișa o listă de fișiere și foldere dintr-un director C:\.

Pasul 3: Instalarea fișierelor de ajutor

Comenzi precum CDși dir nu sunt comenzi PowerShell active. Acestea sunt așa-numitele aliasuri (alias-uri) - înlocuitori pentru comenzile reale PowerShell. Aliasurile sunt utile pentru cei cu multă experiență cu linia de comandă. Cu toate acestea, ele nu ating adâncimea PowerShell.

Pentru a începe cu PowerShell, tastați Ajutorși comanda de care aveți nevoie. Captura de ecran arată comanda .

Echipă Ajutor spune ca dir este un alias pentru o comandă PowerShell Get-ChildItem. Dacă formați get-childitem v PS C:\>, veți vedea la fel ca atunci când utilizați comanda dir.

După cum se indică în partea de jos a capturii de ecran, fișierele de ajutor pentru PowerShell nu sunt instalate automat. Pentru a le obține, rulați PowerShell ca administrator și tastați update-help. Instalarea fișierelor de ajutor va dura câteva minute, este posibil să lipsească un număr de module - de exemplu, Help for NetWNV și SecureBoot nu au fost instalate în acest caz. Când totul este gata, sistemul complet de ajutor va oferi întotdeauna sfaturile potrivite.

Acum tastați comanda obține ajutorși orice comandă de care sunteți interesat ("cmdlet" în limba PowerShell, în cmdlet-uri ruse), va fi afișată descrierea acesteia. De exemplu, get-help get-childitem oferă o listă de opțiuni get-childitem. De asemenea, puteți afișa diferite opțiuni posibile. de exemplu

get-help get-childitem -exemple

produce șapte exemple detaliate de utilizare get-childitem. Echipă

get-help get-childitem -detailed

include aceste șapte exemple și explicații detaliate ale fiecărui parametru din cmdlet get-childitem.

Pasul 4: Obțineți ajutor cu opțiuni

Pe captură de ecran este posibil să fi observat două liste mai jos SINTAXĂ pentru get-childitem. Având două sintaxe diferite înseamnă că puteți utiliza două moduri de a rula un cmdlet. Cum să păstrăm sintaxa separată una de cealaltă și ce înseamnă parametrii? Răspunsul este simplu dacă știi trucul.

Pentru detalii despre parametrii cmdlet-ului get-childitem sau orice alt parametru de utilizare -deplin:

get-help get-childitem -full

Aceasta oferă o listă cu ceea ce puteți face cu cmdletul și ce se va întâmpla. Uită-te la captura de ecran.

Vizualizarea descrierii parametrilor vă permite să observați acest lucru get-childitem face posibilă obținerea unui obiect copil(cum ar fi un nume de subdosar sau un nume de fișier) în locația specificată, cu sau fără potrivirea anumitor caractere. De exemplu:

get-childItem „*.txt” -recurse

returnează o listă de fișiere „*.txt” din folderul curent și toate subfolderele (datorită -recurs). Întrucât

get-childitem „HKLM:\Software”

returnează o listă cu toate cheile de registry de nivel superior în HKEY_LOCAL_MACHINE\Software.

Dacă ați încercat vreodată să intrați în registry folosind linia de comandă Windows sau fișierele .bat, veți putea aprecia funcționalitatea acestei opțiuni de acces.

Pasul 5: Învățarea numelor

Există un motiv pentru care cmdleturile afișate până acum arată similare: get-childitem, update-help, get-help folosiți același model verb-substantiv. Această convenție se aplică tuturor cmdlet-urilor PowerShell în care verbul vine înaintea substantivului unic. Acest lucru îi va atrage pe cei care au suferit la un moment dat de inconsecvența numelor de comandă în VB și VBA.

Aruncă o privire la cele mai comune cmdlet-uri:

setați locația: setează locația curentă de lucru într-o anumită locație

obţine-conţinut: obțineți conținutul fișierului

obţine-element: obțineți fișiere și foldere

element de copiere: copiază un obiect dintr-o locație în alta

eliminare-articol: șterge fișiere și foldere

: Primește procesele care rulează pe computerul local sau la distanță

obțineți serviciul: Primește serviciile care rulează pe computerul local sau la distanță

invocare-webrequest: primește conținut dintr-o pagină web de pe internet

Pentru a vedea cum funcționează un anumit cmdlet, utilizați obține ajutor ca in cazul

get-help copy-item -full

Pe baza descrierii din ajutor, puteți înțelege de ce are nevoie cmdletul. De exemplu, dacă doriți să copiați toate fișierele și folderele din Documente v c:\temp, utilizare

element de copiere c:\users\ \documents\* c:\temp

Introducând această comandă, veți vedea câteva caracteristici interesante ale mediului PowerShell. De exemplu, dacă tastați copie-iși apăsați butonul Tab, PowerShell se va umple Copiați elementul. Dacă un cmdlet este scris greșit și PowerShell nu îl poate recunoaște, se oferă o descriere completă a ceea ce a mers prost.

Încercați acest cmdlet:

invoke-webrequest askwoody.com

Veți primi o listă scurtă de titluri, imagini, link-uri și alte conținuturi ale paginii web. Fi atent la obține ajutor la listă invocare-webrequest, care „returnează o colecție de formulare, link-uri, imagini și alte elemente HTML importante” - exact ceea ce ar trebui să fie afișat pe ecran.

Unele cmdleturi ajută la gestionarea PowerShell în sine:

obține-comandă: lista tuturor cmdlet-urilor disponibile

obţine-verb: lista tuturor verbelor disponibile

limpede-gazdă: Ștergeți ecranul programului gazdă

Parametrii diferiți vă permit să reduceți comenzile și să restrângeți gama de opțiuni utile. De exemplu, pentru a vedea o listă cu toate cmdleturile care funcționează cu serviciile Windows, tastați

get-command *-service

Vor fi afișate toate verbele disponibile cu un substantiv serviciu. Iată lista lor:

Obțineți service

Serviciu nou

Reporniți serviciul

Reluați serviciul

Set Service

pornire-serviciu

Opriți serviciul

Suspendați serviciul

Puteți combina aceste cmdleturi cu altele.

Pasul 6: Utilizarea țevilor

Dacă sunteți familiarizat cu linia de comandă Windows sau cu fișierele batch, atunci știți despre redirecționare și conducte. Redirecționarea (simbolul >) și conductele (simbolul |) preiau rezultatul unei acțiuni și îl atașează în altă parte. De exemplu, puteți redirecționa rezultatul unei comenzi dirîntr-un fișier text sau transmiteți rezultatul comenzii ping la echipa găsi pentru a filtra rezultate interesante, cum ar fi

dir > temp.txt

ping askwoody.com | găsiți „pachete” > temp2.txt

Aici, în echipa a doua găsi caută o sfoară pachete, preluat de la adresa askwoody.com prin comandă pingși îmbină toate liniile care se potrivesc într-un fișier numit temp2.txt.

Prima dintre aceste comenzi funcționează bine în PowerShell. Pentru a rula a doua comandă, aveți nevoie de ceva de genul

ping askwoody.com | selectați pachete de șiruri | out-file temp2.txt

Utilizarea redirecționării și a conductelor extinde foarte mult capacitățile liniei de comandă Windows: în loc să derulați la nesfârșit ecranul în căutarea unui șir de text, puteți filtra comenzile Windows dorite.

Powershell are suport teavași nu se limitează la text. PowerShell vă permite să treceți un întreg obiect de la un cmdlet la altul, unde obiectul este o combinație de date (numite proprietăți) și acțiuni (metode) care pot folosi acele date.

Partea dificilă începe când obiectele sunt aliniate. Obiectele furnizate de un cmdlet trebuie să se potrivească cu tipul de obiecte acceptate de cmdlet-ul primitor. Textul este un tip de obiect foarte simplu, așa că dacă lucrați cu text, alinierea obiectelor este o sarcină simplă. Alte obiecte nu sunt atât de elementare.

Cum să-l înțelegi? Utilizați cmdlet obţine-membru. Dacă doriți să știți prin ce tip de obiect se ocupă un cmdlet, rulați-l obţine-membru. De exemplu, dacă încercați să înțelegeți procesele care rulează pe un computer și ați restrâns opțiunile la cmdleturi , iată cum să cunoașteți rezultatul cmdlet-urilor:

obține procesul | obţine-membru

Rularea acestui cmdlet produce o listă lungă de proprietăți și metode pentru , dar chiar la începutul listei puteți vedea tipul de obiect care creează :

TypeName: System.Diagnostics.Process

Captura de ecran de mai jos arată și proprietățile intitulat Găsiți-proces mânere, Nume, NPM, PM, SI, VMși WS.

Dacă doriți să manipulați rezultatul pentru a lucra cu acest cmdlet (în loc să afișați o listă lungă de procese active pe monitor), trebuie să găsiți o altă comandă care să ia ca intrare Sistem.Diagnosticare.Proces. Utilizați din nou PowerShell pentru a găsi cmdletul potrivit:

get-command -Parametertype System.Diagnostics.Process

Acest cmdlet produce o listă de cmdleturi care pot fi procesate Sistem.Diagnosticare.Proces.

Unele cmdleturi sunt cunoscute pentru că acceptă aproape orice tip de date. Principalul dintre ei este . Acest cmdlet trece prin el însuși fiecare obiect trimis prin conductă, unul câte unul și îi aplică criteriile de selecție specificate. Există un marker special numit $_ , care vă permite să utilizați fiecare articol din conductă, unul câte unul.

Să presupunem că doriți să obțineți o listă a tuturor proceselor care rulează pe computer cu numele „svchost”, adică doriți să potriviți proprietatea Nume proces svchost. Utilizați comanda:

obține procesul | unde-obiect ($_.Name -eq „svchost”)

Cmdlet privind fiecare obiect Sistem.Diagnosticare.Proces, compară .Nume acest obiect cu „svchost”; dacă există potriviri, acestea sunt afișate pe monitor. Uită-te la captura de ecran.

Pasul 7: Analizați comenzile PowerShell utile

Până acum, știți deja suficient pentru a putea deteriora computerul, așa că aveți grijă. Să vedem, de exemplu, comenzile PowerShell solicitate frecvent.

Aceste comenzi funcționează numai pe Windows 10 și numai atunci când rulează PowerShell ca administrator. Sunt concepute pentru a reinstala aplicațiile Windows 10 preinstalate și pot fi utile celor care au dezinstalat mai întâi aceste programe și apoi au decis să le returneze. Comenzile arată astfel:

Get-AppXPackage | Foreach (Add-AppxPackage -DisableDevelopmentMode -Înregistrați „$($_.InstallLocation)\AppXManifest.xml”)

Dacă executați această comandă, ignorați avertismentele indicate în roșu, iar când comanda este finalizată, reporniți computerul; toate programele preinstalate în Windows 10 vor apărea la locul lor.

Iată cum funcționează această comandă. Get-AppXPackage verifică toate pachetele de aplicații din profilul utilizatorului. Chiar dacă dezinstalați o aplicație, aceasta rămâne în lista de profil a utilizatorului.

Cmdlet Get-AppXPackage returnează un obiect TypeName Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage, care include numele complet calificat al pachetului de aplicație și locația fișierului manifest XML corespunzător. Dacă rulați cmdletul get-appxpackage, veți vedea o listă lungă de pachete de aplicații. Captura de ecran arată o descriere a aplicației Xbox.

Cmdlet Pentru fiecare circulă prin fiecare obiect în AppXPackage, trimițându-le la cmdlet Add-AppxPackage. Conform obține ajutor pentru Add-AppxPackage, există două comutatoare cu cheie:

  • Intrerupator -Inregistreaza-te utilizat pentru a înregistra instalările existente de pachete de aplicații, puteți seta opțiuni Dezactivați modul de dezvoltareși Inregistreaza-te
  • Intrerupator -Dezactivați modul de dezvoltare spune Windows să reînregistreze un pachet de aplicații existent care a fost dezactivat, neînregistrat sau corupt.

linia " $($_.InstallLocation)\AppXManifest.x ml" descrie unde se află fișierul manifest.xml. Dacă te uiți la fișiere AppXManifest.xml, veți vedea o listă complexă de ID-uri de aplicație, executabile și un număr mare de elemente vizuale asociate cu aplicația.

După repornire, toate pachetele de aplicații adăugate sunt descărcate și instalate din Magazinul Windows.

A trecut mai bine de un an de la lansarea Windows 7 și Server 2008.

Programatorii, administratorii de sistem și utilizatorii avansați au găsit multe utilizări pentru fereastra albastră asemănătoare cu linia de comandă.

Utilizatorii începători, în cea mai mare parte, nici măcar nu știu ce este PowerShell (PS).

Dar scripturile pentru PowerShell vă permit să automatizați, aproape 100% din acțiunile și scripturile efectuate în sistemul de operare prin linia de comandă și interfața grafică.

Să ne familiarizăm cu principalele caracteristici ale acestui program, acordând mai multă atenție funcțiilor de creare și rulare a scripturilor (microprograme).

Există o multitudine de manuale și documentație despre program, inclusiv în limba rusă. Obiectivul articolului– pentru a oferi utilizatorului cunoștințe conceptuale, puse in actiune, și dacă merită să faceți cunoștință cu interpretul și execuția scripturilor în el mai aproape, fiecare va decide singur.

Ce este Windows PowerShell?

PowerShell- Un interpret bazat pe .NET Framework, dotat cu propriul limbaj de scripting.

Primul înseamnă că funcționează în modul text: intri, rulezi o comandă, iar pe ecran vezi rezultatul execuției acesteia.

Așa cum a fost în MS-DOS și versiunile mai vechi de UNIX.

Al doilea simplifică, accelerează și automatizează foarte mult administrarea, întreținerea sistemelor, aplicațiilor, proceselor și serviciilor conexe de către administratori și utilizatorii obișnuiți.

În comparație cu alți interpreți, PS este diferit:

  • integrare cu. - vă permite să creați scripturi puternice prin încorporarea codului de program în ele;
  • toate datele returnate sunt obiecte, nu date de tip text/șir (șir), ceea ce implică transferul lor către alte scripturi și orice procesare.

PowerShell versiunea 2 are următoarele caracteristici, dintre care unele le vom considera mai detaliat:

  • Abilitatea de a reprezenta comenzi ca cmdlet-uri– sunt lansate în interiorul interpretului, în caz contrar comanda este executată într-un proces separat.
  • Folosind conducte- concepute pentru a transfera date de la o comandă la alta, păstrând în același timp structura și tipul acestora.
  • Transfer de date integrat cu mai multe fire prin rețea cu setarea priorității și reluarea conexiunii.
  • Suport pentru parametrii poziționali și numiți.
  • munca de fundal– apel asincron de comenzi și lansare de scripturi pe mașini la distanță.
  • Configurarea sesiunilor limitate cu clienți la distanțăși rulează scripturi pe ele.
  • Module- o modalitate de a organiza scripturile atunci când acestea devin autosuficiente și rulează în propriul container fără a afecta mediul modulului.
  • Prezența unui handler de erori.
  • Mediu grafic pentru limbaj: Sintaxă, depanare, evidențiere, completare automată a comenzilor cu suport și marcaje Unicode.
  • Adăugarea punctelor de întrerupere la linii, comenzi, operații și variabile pentru depanarea scripturilor.
  • Blocați și comentariile inline.
  • Suport pentru crearea de aliasuri pentru unele cmdlet-uri, care sunt convertite în comenzi obișnuite în momentul execuției.
  • Creați sesiuni limitate, unde puteți executa o listă strict specificată de comenzi și multe altele.

Codul sursă PowerShell pus la dispoziția tuturor: orice membru al comunității este liber să-și creeze propriile extensii pentru a crește funcționalitatea interpretului de linie de comandă.

Puteți începe să stăpâniți limbajul de scripting integrat fără abilități de programare.

Este puțin probabil să fie posibil să se creeze un script complex, dar aproape toată lumea va putea efectua secvențe de acțiuni primitive.

Deși, fără cunoștințe despre conceptele de bază ale PowerShell, este puțin probabil să se facă ceva în fereastra interpretorului de comenzi. Să începem cu ei.

Cmdleturi

Cmdleturi- comenzi PS originale, în spatele cărora sunt ascunse o varietate de funcții. Comenzile încorporate în interpret sunt implementate conform principiului „verb-substantiv”, de exemplu, Get-Process (obținerea unei liste de procese). Această soluție vă permite să înțelegeți esența echipei deja din numele acesteia (în engleză).

Unele cmdleturi acceptă primirea/transferul de date și matrice de informații, păstrând în același timp structura și tipul acestora. Acest lucru funcționează pe principiul unei conducte (acesta va fi discutat în secțiunea următoare). Indiferent de ce, cmdleturile rulează și procesează obiectele într-o ordine strictă.

Pentru a implementa cmdlet-uri, pot fi utilizate orice API .NET acceptate create în oricare dintre limbile .NET.

Astfel, utilizatorului i se acordă acces la funcțiile specifice ale programului.

Cmdleturile pot accesa informațiile necesare direct sau prin căi unice (litere de unitate și căi de director).

Prin cmdleturi, puteți lucra cu sistemul de fișiere și obiectele depozit de certificate, aplicațiile și serviciile instalate.

Transportor

Când creați scripturi nu foarte primitive sau pentru a efectua orice operații cu datele obținute ca urmare a scriptului, uneori trebuie să efectuați și unele acțiuni.

Există un transportor pentru asta. La fel ca în UNIX, concatenează comenzile prin trecerea ieșirii unui cmdlet la intrarea altuia, neschimbată, păstrându-și tipul.

Nu necesită nici un container sau analiza caracter cu caracter a informațiilor.

Informațiile transmise pot include și o funcție. După ce munca comenzilor combinate este finalizată, funcția de conversie a informațiilor într-o formă de text (conversia datelor în șiruri de caractere) este numită folosind formatarea textului.

Scripturi

În ciuda faptului că shell-ul vă permite să automatizați multe acțiuni, trebuie să introduceți comenzi manual, ceea ce nu este foarte convenabil.

Mai ales când aceleași operațiuni ar trebui efectuate în mod constant.

Da, și fără factorul uman nu se poate: greșelile de scriere, erorile, tastele atinse accidental la scrierea liniilor de cod, corectarea sau tastarea unei linii noi necesită o atitudine mai prietenoasă față de utilizator.

Pentru a efectua lanțuri monotone de acțiuni în PS, sunt implementate scripturi - fișiere text cu o secvență de comenzi pe înțelesul interpretului din interior.

Scripturile din PowerShell vor simplifica și automatiza și mai mult munca pe PC și întreținerea acestuia, mai ales dacă scriptul conține ramuri, condiții, operații logice și bucle.

Dar aici „nu tot ce strălucește este aur”: scrierea propriului scenariu sau încărcarea unuia gata făcut (deși se potrivește puțin cu propriile obiective) nu va funcționa atât de ușor.

Dacă înMicrosoftera permis oricat de multe necazuri făcut scenarii pentruPowerShell , scris de escroci și nedoritori în scopuri egoiste sau huliganiste.

Pentru a rula pe Windows PS, trebuie să treceți controlul lansării acestuia.

Dacă nu este trecut, iar scriptul ar trebui să fie executat, va trebui să modificați configurația obiectelor responsabile de securitatea macro-urilor.

Înainte de a utiliza scripturi

Când operează VBS, există multe probleme de care dezvoltatorii PowerShell au scăpat complet dacă securitatea scripturilor nu este redusă pentru a satisface solicitările de script ale utilizatorilor sau pentru a rezolva probleme legate de nivelul de securitate al sistemului de operare.

Rularea scriptului descărcat pe computerul utilizatorului este o modalitate simplă și eficientă de a distribui software rău intenționat sau de a fura informații personale de către intruși.

Totul se întâmplă din cauza ignoranței elementare a conținutului fișierului script (ps1)și dorința de a-și rezolva rapid problemele în detrimentul muncii altora. Obiectele care controlează nivelul de securitate al execuției scriptului creează un mediu în care scriptul nu poate fi rulat.

Lansarea intenționată a macrocomenzilor are loc după schimbarea nivelului de securitate, dacă utilizatorul dă voie, realizând ce face și știind cu siguranță ce este în fișierul *.ps1.

Datorită inconvenientului configurației de securitate pentru persoanele care trebuie să implementeze și să ruleze propriile scripturi, este posibilă modificarea configurației.

Aici puteți reduce protecția la minimum și puteți manevra în mod rezonabil între capacitatea de a deschide găuri pentru penetrare și confortul în lucrul cu PowerShell.

Shell-ul are trei niveluri de securitate:

  • fișierele cu extensia ps1 nu sunt identificate de sistem ca executabil și sunt desemnate ca necunoscute sau text (faceți dublu clic pentru a deschide în editorul de text implicit utilizat pe computer);
  • shell-ul vă permite să executați scripturi după ce ați specificat calea completă către acestea, fișierele script din directorul curent nu sunt căutate, ceea ce face imposibilă executarea macrocomenzilor aflate în directorul curent;
  • rulează politica de execuție a scriptului încorporată, care este responsabil pentru adăugarea celui necesar la lista de scripturi permise.

Nici măcar să nu te gândești la schimbarea configurației, coborându-l cel puțin la al doilea nivel, fără a te familiariza cu elementele de bazăPowerShell, până când începi să înțelegi cel puțin superficial conținutul lui *.ps1.

Există, de asemenea, conceptul de politică de execuție, care este conceput pentru a preveni execuția accidentală a scripturilor. Există până la cinci setări ale politicii de lansare:

  • limitat - instalat implicit, sunt executate doar scripturi semnate de Microsoft care permit obținerea de informații despre shell-ul hardware și software al computerului;
  • fișiere șterse semnate– toate macro-urile pot fi executate, dar fișierele trimise prin poștă trebuie să fie semnate;
  • semnat digital de o sursă de încredere– toate scripturile semnate sunt executate;
  • nelimitat- rulați orice macrocomandă;
  • ocolire- sunt destinate programatorilor care își creează propriul sistem de securitate și nu îl folosesc pe cel prevăzut în shell.

Puteți verifica starea actuală a politicii de pornire cu comanda „Get-ExecutionPolicy”.Indiferent de politica de securitate, utilizatorul nu va putea rula un script care conține comenzi pe care nu are suficiente privilegii pentru a le executa.

Rulează PowerShell

Este timpul să trecem de la teorie la practică. Deci, pentru a executa scripturi, trebuie să obțineți o semnătură digitală sau (a doua opțiune este mai simplă).

Există mai multe moduri de a afișa o fereastră PowerShell.

Se prezintă sub două forme:

  • consola clasica;

  • PowerShell ISE - adaugă suport pentru file, sintaxă, ajutor contextual, meniuri contextuale și principale, ceea ce facilitează foarte mult munca în interpret.

start

Cel mai simplu mod de a apela PS este prin Start.

  1. Deschiderea meniului(în Windows 7, faceți clic pe „Toate programele”).
  2. Accesați directorul Windows PowerShellși faceți clic pe pictograma dorită.

Orez. 6 - Lansarea PS prin dialogul „Run”.

Win+X

În Windows 10 PS poate fi apelat din meniul WinX. Faptul este că implicit, făcând clic pe comandă "Linie de comanda" deschide CMD. Poate fi înlocuit cu PowerShell.

Deschideți „Proprietăți” din bara de activități, în fila „Navigație”, bifați caseta de lângă singura opțiune și salvați setările.

Puteți apela PowerShell prin linia de comandă scriind „powershell” în el sau rulând fișierul executabil de-a lungul căii: %WINDIR%\ System32\ WindowsPowerShell\v1.0 pentru sisteme pe 32 de biți și la %WINDIR%\ syswow64\ WindowsPowerShell\v1.0 pentru Windows pe 64 de biți de orice ediție.

Orez. 8 - Lansarea PS din directorul în care este stocat fișierul executabil

Învățare PowerShell - Cărți și resurse

Acest articol deschide o serie de postări dedicate PowerShell. Da, este timpul liniei de comandă!

Pe scurt - ce este PowerShell?

  • PowerShell - shell de linie de comandă
  • Comenzile PowerShell rulează într-o conductă
  • PowerShell poate fi extins pentru a permite diferite tehnologii
  • și cel mai important, odată ce stăpânești PowerShell, vei deveni un administrator mai bun.

De ce PowerShell?

Este de remarcat două puncte. În primul rând, PowerShell conține un limbaj de scripting; este un limbaj foarte compact, cu doar două duzini de cuvinte cheie. Dar, de fapt, PowerShell, așa cum am menționat mai sus, este un shell de linie de comandă, la fel ca cmd.exe sau shell-ul UNIX Bash.

Al doilea punct: Microsoft nu încurajează practica utilizării consolelor echipate cu GUI pe servere. Faptul este că serverele pot asigura funcționarea eficientă a interfețelor grafice doar în detrimentul degradării performanței serverului. Dar utilizarea unei GUI pe clienți, chiar dacă acești clienți sunt conectați la un server, este perfect acceptabilă astăzi. Deci, în versiuni mai noi Windows Server toate funcțiile sunt disponibile în primul rând folosind PowerShell și abia apoi (și unele nu sunt disponibile deloc) folosind GUI-ul serverului.

Puteți descărca PowerShell de pe site-ul TechNet - dar în sistemul de operare modern MS Winodws este disponibil imediat.

Pentru un început mai ușor în învățarea Windows PowerShell, vă prezint atenției o selecție de diverse materiale. Să începem lista cu un curs video din îndepărtatul 2009:

  • Scrierea primului script și cunoașterea Windows PowerShell

Resurse de internet:

  • Stăpânirea PowerShell - powershell.com

Programe:

  • Browser de scripturi pentru Windows PowerShell ISE. Acest supliment vă permite să găsiți cu ușurință scripturile necesare în TechNet Script Center conform criteriilor și parametrilor specificați. In plus, contine un modul special Script Analyzer, care, in urma analizei, ofera imbunatatiri/modificari care cresc eficienta scriptului scris. Acest modul poate fi obținut din pachetul Windows PowerShell ISE, care face parte din Windows OC. Problema este că Windows Server și PowerShell ISE necesită activare. Licența în sine este plătită, dar nu disperați. Veți avea aproximativ 180 de zile pentru a testa acest produs.
  • Dell PowerGUI- Vă permite să simplificați construirea propriilor scripturi PowerShell până la simpla selectare a cmdlet-urilor necesare care se potrivesc sarcinii dvs. și tragerea lor în locurile potrivite. Ideal pentru cei care sunt noi în PowerShell, dar au o înțelegere de bază a conceptelor. PowerGUI este un editor ușor de utilizat, care este probabil să vă îmbunătățească înțelegerea cu privire la asamblarea de scripturi mai complexe și mai avansate, mai ales dacă sunteți cel mai bun la absorbția vizuală a informațiilor.

Una dintre cele mai elementare surse de cunoștințe este ajutorul excelent al programului:

Sper că această listă de resurse vă va ajuta în studiu. PowerShell. Ce cărți și dezvoltări ai folosit? Lăsați răspunsul dvs. în comentarii și mult succes în învățare lucruri noi! 😉

Sunt lucruri pe care le facem zilnic ca administratori de rețea Windows, dar dacă ni s-ar cere să le facem folosind linia de comandă, spre deosebire de administratorii Linux, ar fi foarte problematic pentru noi, administratorii Windows. Windows a fost întotdeauna slab când vine vorba de instrumente de linie de comandă. După părerea mea, totul s-a schimbat odată cu apariția Windows Powershell. Cu Powershell (sau cu alte cuvinte PS) puteți îndeplini atât de multe funcții diferite pe care nu le puteam îndeplini înainte. În acest articol, ne vom concentra asupra modului în care Powershell ne poate ajuta să realizăm unele funcții comune de rețea din linia de comandă. Continuați să citiți pentru a afla mai multe!

Ce este PowerShell?

Powershell este un instalabil funcţie Windows Server 2008. Pentru a instala Powershell, trebuie să instalați caracteristica Powershell utilizând Expertul Adăugare caracteristici. Procesul de instalare durează aproximativ un minut și, odată ce componenta este instalată, aveți acces la un limbaj uimitor de scriptare în linie de comandă. Spre deosebire de alte limbaje de scripting din Windows, Powershell este conceput exclusiv pentru administratorii de sistem. Powershell folosește .NET și comenzi ("cmdlet-uri" sau "command-lets") în activitatea sa. În calitate de utilizator PS, puteți utiliza comenzile individual sau le puteți lega împreună pentru a finaliza sarcini mai complexe.

După ce ați instalat PS, veți putea rula Start -> Toate programele -> Windows Powershell 1.0, și apăsați Windows PowerShell. În acest moment, ar trebui să aveți o fereastră CLI albastră care arată ca Figura 1.

Figura 1: Fereastra de comandă Windows Powershell

Puteți spune întotdeauna că lucrați în Powershell, deoarece fereastra „PS” are întotdeauna următoarea linie la început:

PS C:\Utilizatori\Administratori

Acum că Powershell este instalat și fereastra sa este deschisă, permiteți-mi să vă arăt câteva sarcini comune de rețea care pot fi realizate în PS.

Listați adresele IP ale serverului dvs

Pentru a obține o listă de adrese IP pe serverul dvs. Windows 2008, trebuie să utilizați următoarea comandă:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE - ComputerName . | Select-Object-Property IPAddress

Iată cum arată datele după ce am folosit această comandă pe serverul meu Windows 2008:

Figura 2: Listarea adreselor IP folosind Windows Powershell

După cum puteți vedea din figură, datele inițiale ne arată că am un adaptor cu o adresă IP V4 și o adresă IP V6 pe acest server Windows 2008. În sine, acest lucru nu este surprinzător, dar gândiți-vă la ce puteți face cu el folosind alte funcții de scripting.

După cum ne învață ghidul utilizatorului Powershell, datele rezultate sunt o matrice și puteți vedea adresa IP doar trecând acele date către „Select-Object” (după dezactivarea IPV6), astfel:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE - ComputerName . | Select-Object -ExpandPropertyIPAddress

Figura 3: Listarea unei adrese IP NUMAI cu Windows Powershell

Obținerea listei de configurare a adaptorului de rețea folosind Powershell

Pentru a vizualiza configurația de bază a adaptorului de rețea, puteți utiliza următoarea comandă:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE „ComputerName .

Deși acest articol se concentrează pe utilizarea PS pe Windows Server 2008, acest utilitar poate fi folosit și pe Windows XP, Vista sau Server 2003. Iată un exemplu de ieșire de comandă care rulează pe stația mea de lucru Windows XP:

Figura 4: PowerShell care arată configurația adaptorului de rețea pe Windows XP

Testați interogarea computerului folosind PowerShell

În timp ce linia de comandă PS poate executa în continuare toate comenzile obișnuite Windows (cum ar fi un sondaj de testare), puterea Powershell este că puteți lua datele pe care le primiți și le puteți modifica cu ușurință.

Iată un exemplu despre cum se poate face acest lucru, oferit de Ghidul utilizatorului Windows Powershell. În acest exemplu, rezultatele Win32_PingStatus sunt analizate utilizând Select-Object. În acest caz, datele arată pur și simplu timpul de răspuns și codul de stare.

Iată comanda care a fost folosită:

Get-WmiObject -Class Win32_PingStatus -Filter "Address="127.0.0.1"" - ComputerName . | Select-Object-Property Address, ResponseTime, StatusCode

Și iată rezultatele utilizării comenzii pe computerul meu Windows:

Figura 5: Date PowerShell care arată starea unui sondaj analizat cu Select-Object

Partajarea unui folder utilizând Windows Powershell

Voi fi sincer cu tine. Utilizarea comenzilor Powershell nu este întotdeauna la fel de ușoară ca utilizarea comenzilor Windows existente cu care sunteți deja familiarizat. Iată un exemplu.

Următoarea comandă PS va partaja folderul în C:\temp ca „davidtemp” și îi va aplica o comandă diferită:

(Get-WmiObject -List -ComputerName . | Where-Object -FilterScript ($_.Name -eq "Win32_Share")).InvokeMethod("Create",("C:\temp","davidtemp",0,25, „Dosarul temp al lui David”))

Pe de altă parte, puteți utiliza doar comanda deja încercată și testată cota netă:

Cotă netă davidtemp=C:\temp /remark:„Dosar partajat temp al lui David”

Figura 6: Datele PowerShell și comanda tradițională de partajare a rețelei

Rețineți că comanda Powershell nu pur și simplu a eșuat, ci mi-a dat o eroare teribilă. Am încercat această comandă pe Windows XP și Vista și am fost administrator de sistem.

Pe de altă parte, echipa cota netă foarte simplu și a funcționat din prima încercare. Și în timp ce încerc să vă ghidez prin elementele de bază ale Powershell, nu uitați că Powershell poate folosi comenzi tradiționale de rețea Windows, care sunt mult mai ușor de utilizat în multe cazuri. Cu toate acestea, s-ar putea să vă aflați într-o situație în care aceste comenzi tradiționale nu fac tot ce aveți nevoie și aici intervine Powershell.

Alte comenzi de rețea și mai complexe

Dacă veți folosi doar cele mai elementare comenzi de administrare a rețelei din Powershell, s-ar putea să vă confuzi și să nu le mai folosiți deoarece, ca orice alt limbaj de scripting, există multe de învățat aici.

Cu toate acestea, odată ce ați depășit curba de învățare și ați învățat cum să utilizați limba, veți avea un instrument foarte eficient și vă poate economisi timp.

După cum poate ați observat din exemplele anterioare, unul dintre parametrii pentru majoritatea comenzilor Powershell este „nume computer”. Când punem un punct ("".") în loc de numele computerului, acesta va fi localhost (calculatorul nostru). Cu toate acestea, putem înlocui, de asemenea, orice adresă IP sau nume de computer Windows din domeniu, ceea ce ne oferă posibilitatea de a folosi aceste comenzi nu numai pe computerul nostru, ci și de a crea scripturi puternice în Powershell care pot fi folosite pe toate computerele din rețea.

De exemplu, iată o comandă care trimite adresa IP a unui computer Dell prin LAN:

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE - ComputerName DELL9400

Iată rezultatele acestei comenzi:

Figura 7: Rezultatele Powershell ale obținerii unei adrese IP de la un computer la distanță

Și iată o imagine mărită care arată informațiile necesare:

Figura 8: Mărirea în fereastra de rezultate Powershell pentru obținerea adresei IP a unui computer la distanță

Deci, capacitatea de a lucra cu computere la distanță este caracteristica principală a Powershell, dar o altă caracteristică puternică este capacitatea de a filtra datele și de a combina datele obținute din utilizarea diferitelor comenzi.

Aruncă o privire la următorul exemplu:

„127.0.0.1","localhost","research.microsoft.com" | ForEach-Object -Process (Get- WmiObject -Class Win32_PingStatus -Filter ("Adresa="" + $_ + """) -ComputerName .) | Select-Object-Property Address, ResponseTime, StatusCode

În acest exemplu, a fost obținută o listă de adrese IP și nume de domenii. Această listă a fost transmisă la „ForEach-Object”. Pentru fiecare dintre aceste „obiecte” (adresă IP/nume de domenii), a fost folosit elementul PingStatus „Get-WmiObject”. Datele de sondare pentru fiecare nume de domeniu au fost apoi rulate prin „Select-Object”, rezultând doar adresele, timpii de răspuns și codurile de stare care au fost afișate.

Figura 9: Testați sondarea cu o listă atunci când combinați și interogați datele

În opinia mea, acest exemplu demonstrează unele dintre capacitățile Powershell. După cum puteți vedea, este posibil să direcționați și să redirecționați datele de intrare și de ieșire în direcții diferite, în timp ce vă îndepliniți sarcinile administrative.

Ce altceva trebuie să știi?

Concluzie

Windows Powershell este un utilitar foarte puternic. Este imposibil să acoperiți tot ce puteți face cu Powershell în acest articol, dar sper că am reușit să vă dau o idee generală despre ceea ce poate face acest instrument și să vă inspir să explorați mai departe în acest domeniu. În fiecare zi există noi cărți, cursuri și tone de materiale pe Internet despre funcțiile Powershell care pot fi folosite de administratorii de sistem Windows. Cu administratorii Windows atât de profund atașați de interfața grafică, va fi nevoie de timp pentru ca Powershell să fie adoptat de companiile care nu au o nevoie puternică de instrument. Sunt sigur că administratorii vor folosi Powershell pentru a crea scripturi mai scurte care pot fi folosite pentru a efectua sarcini mai complexe. Sper că Powershell va câștiga din ce în ce mai multă popularitate în întreaga lume!

Mulțumiri speciale lui Microsoft pentru că a furnizat exemple de comandă în documentația Ghidului utilizatorului Windows Powershell.

În acest articol, vom considera o astfel de tehnologie de la Microsoft ca Windows PowerShell, vom vorbi despre ce este PowerShell, ce sunt cmdleturile și pipeline-ul, cum să scrieți scripturi și module și, de asemenea, vom atinge alte caracteristici la fel de importante și utile ale Windows PowerShell.

Ce a contribuit la apariția Windows PowerShell?

Înainte de apariția PowerShell, existau ( si exista) următoarele instrumente pentru automatizarea și administrarea serviciilor: linia de comandă Windows și Windows Script Host. Dar aceste tehnologii au dezavantaje.

Linia de comandă Windows are atât capacitatea de a efectua unele sarcini administrative, cât și capacitatea de a scrie un algoritm de acțiune, salvându-l ca script (fișier bat), în timp ce puteți utiliza unele elemente de programare, de exemplu, folosiți variabile, structuri condiționate, și chiar ceva de genul ciclurilor.

Majoritatea produselor software au o interfață de consolă, de exemplu. putem controla programul folosind linia de comandă, economisind în același timp resurse din cauza lipsei de costuri pentru interfața grafică. Microsoft pentru sistemul de operare pentru server Windows Server lansează chiar ediții fără interfață grafică ( Server Core, Windows Server 2016 are chiar Nano Server), dar toate acestea nu sunt suficiente, deoarece posibilitățile liniei de comandă sunt limitate, adică. nu vom putea scrie o logică complexă pentru a automatiza ceva și, dacă putem, atunci vom avea nevoie de timp și cunoștințe pentru asta.

De asemenea, dezavantajul liniei de comandă este că folosim diverse utilități de consolă ale produselor software pentru a gestiona pe deplin serverul și, prin urmare, este foarte dificil să folosim linia de comandă pentru administrare, prin prisma faptului că toate aceste utilități au sintaxă diferită. , parametrii, metodele de utilizare și în vederea îndeplinirii sarcinilor tipice, i.e. zilnic, trebuie să țineți cont de toate, iar pentru a efectua sarcini non-standard, mai întâi trebuie să citiți ajutorul sau documentația.

Tehnologia Windows Script Host vă permite să efectuați toate sarcinile administrative pe care le face linia de comandă, inclusiv automatizarea lor prin scrierea de scripturi WSH, dar aici putem folosi deja limbaje de programare cu drepturi depline ( VBScript și JScript), adică puteți implementa logica și algoritmi complexi. În plus, cu ajutorul WSH, gestionăm produse software printr-o interfață obiect, cu alte cuvinte, Windows Script Host este mult " mai rece' decât linia de comandă. Dar nici această tehnologie nu a devenit acel instrument ideal de administrare și automatizare a acestei administrări pentru administratorii de sistem, deoarece Windows Script Host necesita cunoașterea limbajelor de programare de mai sus, ceea ce este de fapt de prisos pentru administratorii de sistem. Administratorii au nevoie doar de un instrument de administrare simplu, cu capacitatea de a programa unele acțiuni și nu doresc să se aprofundeze în modelele obiectelor produselor software în limbajele de programare VBScript și JScript.

Drept urmare, Microsoft avea nevoie să dezvolte un instrument de administrare pentru administratorii de sistem care să satisfacă 100 la sută toate nevoile administratorilor de sistem, atât în ​​ceea ce privește capacitățile de administrare și automatizare, cât și în ceea ce privește comoditatea și ușurința în utilizare, astfel a luat naștere Windows PowerShell. .

Ce este Windows PowerShell?

Windows PowerShell este un limbaj de scripting și un shell de comandă Windows conceput pentru a administra și configura sistemele de operare Windows. PowerShell se bazează pe CRL și .NET Framework și, spre deosebire de linia de comandă care acceptă și returnează text, Windows PowerShell funcționează cu obiecte. Fiecare obiect din PowerShell are proprietăți și metode pe care le puteți utiliza pentru a manipula acele obiecte.

În Windows PowerShell, Microsoft a dezvoltat conceptul de cmdlet-uri ( cmdlet-uri), care este un sistem de denumire a comenzilor " Verb Substantiv". Acest sistem permite administratorilor de sistem să stăpânească și să simplifice rapid lucrul cu PowerShell.

Cu Windows PowerShell, puteți:

  • Obține acces la sistemul de fișiere;
  • gestionează registrul;
  • gestionarea serviciilor;
  • gestionarea proceselor;
  • Configurați sistemul de operare;
  • Instalați software-ul;
  • Instalați rolurile și componentele serverului;
  • Administrarea și configurarea rolurilor și componentelor serverului;
  • Scrieți și utilizați scripturi pentru a automatiza managementul și administrarea;
  • Efectuați alte sarcini de administrator de sistem.

Windows PowerShell conține multe utilitare și comenzi utilizate în mod obișnuit care pot fi executate din linia de comandă, cum ar fi ipconfig, ping și altele. Acest lucru se face pentru a facilita tranziția administratorilor de sistem de la linia de comandă la PowerShell.

De asemenea, pentru comoditate, multe comenzi și utilitare utilizate frecvent în PowerShell au sinonime ( Alias), de exemplu cls este un sinonim pentru cmdlet-ul Clear-Host, dir este un sinonim pentru Get-ChildItem ( lista completă a sinonimelor poate fi vizualizată rulând cmdletul Get-Alias).

Pentru a simplifica căutarea comenzii dorite în PowerShell, există un cmdlet special Get-Command, cu care puteți căuta atât după verb, cât și după substantiv. Toate comenzile din Windows PowerShell sunt grupate în module ( de exemplu, Hyper-V, NetTCPIP), ceea ce facilitează, de asemenea, găsirea comenzii potrivite.

După ce este găsită comanda dorită, puteți vedea instrucțiunile de lucru cu această comandă, adică. ajutor, există un cmdlet Get-Help special în acest scop, de exemplu, următoarea comandă va afișa ajutor pe cmdlet-ul Get-Command:

Obține-Ajutor Obține-Comandă

Ajutorul în Windows PowerShell poate fi scurt, detaliat ( parametru -Detaliat), complet ( -Opțiune completă), și puteți afișa, de asemenea, numai exemple ( parametru - Exemple). Următoarea comandă va afișa doar exemple de utilizare a cmdlet-ului Get-Command:

Get-Help Get-Command -Exemple

Ajutorul PowerShell este actualizabil, de ex. poate fi actualizat cu comanda Update-Help.

Versiuni de Windows PowerShell

Prima versiune de PowerShell 1.0 a apărut pe 14 noiembrie 2006 și a fost lansată ca o distribuție separată care putea fi instalată pe următoarele versiuni de sisteme de operare Windows: Windows XP Service Pack 2, Windows Server 2003 Service Pack 1 și Windows Vista.

În Windows Server 2008, PowerShell 1.0 a fost livrat ca o componentă care trebuia, de asemenea, instalată.

Începând cu Windows 7 și Windows Server 2008 R2, PowerShell este livrat ca parte integrantă a sistemului ( acestea. preinstalat, nu este nevoie să îl instalați). Mai jos este un tabel de corespondență între versiunea PowerShell și versiunea sistemului de operare Windows ( acestea. ce versiune de PowerShell este instalată implicit pe ce versiune de Windows):

Versiunea PowerShell versiuni Windows
PowerShell 2.0 Windows 7, Windows Server 2008 R2
PowerShell 3.0 Windows 8, Windows Server 2012
PowerShell 4.0 Windows 8.1, Windows Server 2012 R2
PowerShell 5.0 Windows 10, Windows Server 2016

Cu fiecare nouă versiune de PowerShell, acesta devine un instrument de administrare din ce în ce mai puternic, în comparație, primul PowerShell avea aproximativ 130 de cmdlet-uri, iar în PowerShell 5.0 există deja peste 600 dintre ele!

Puteți afla versiunea curentă a PowerShell folosind proprietatea PSVersion a variabilei încorporate $PSVersionTable, de exemplu, executați următoarea comandă:

$PSVersionTable.PSVersion

Sau rulați cmdletul

Get-Variable -Name PSVersionTable –ValueOnly

unde, valoarea PSVersion va fi versiunea PowerShell.

Limbajul PowerShell

PowerShell este un limbaj de programare pentru scripturi orientate pe obiecte. Este folosit pentru a scrie comenzi pentru a controla toate componentele sistemului de operare Windows în Windows PowerShell și pentru a scrie scripturi pentru a automatiza sarcinile administrative în Windows PowerShell Integrated Scripting Environment (ISE). Deși limbajul PowerShell a fost creat pentru sarcini de administrare, este un limbaj de programare cu drepturi depline, deoarece are constructe de programare care sunt prezente în fiecare limbaj de programare, cum ar fi: condiții, bucle, tratarea erorilor, lucru cu variabile, obiecte, matrice. .

Limbajul PowerShell are o sintaxă unificată pentru scrierea comenzilor și o structură de denumire pentru aceste comenzi conform principiului " Verb Substantiv”, ceea ce face acest limbaj intuitiv atât pentru programatori, cât și pentru administratorii de sistem.

Shell Windows PowerShell

Shell Windows PowerShell este un mediu de execuție pentru comenzi și scripturi scrise în limbajul PowerShell. Acest shell are aceleași caracteristici ca și linia de comandă, cum ar fi: stocarea istoricului execuției comenzii, personalizarea aspectului shell-ului, finalizarea execuției comenzii cu combinația de taste Ctrl + C, precum și multe alte caracteristici care nu se află în shell de linie de comandă, de exemplu, o caracteristică minunată precum „ evidențierea sintaxelor» ( a apărut în PowerShell 5.0).

Puteți porni un shell PowerShell în mai multe moduri, de exemplu:

  • Din linia de comandă tastând PowerShell;
  • Prin caseta de dialog Alerga» ( scurtătură de la tastatură Win+R), tot prin tastarea PowerShell;
  • În Windows 7 - Start->Toate programele ->Accesorii ->Windows PowerShell ->Windows PowerShell;
  • În Windows 8.1 sau Windows Server 2012 R2 - Start-> Toate programele -> Instrumente de sistem -> Windows PowerShell;
  • În Windows 10 sau Windows Server 2016 - Start->Toate programele -> Director Windows PowerShell ( in grupa W) -> Windows PowerShell.

Exemplu de rulare a PowerShell în Windows Server 2016

Captură de ecran cu PowerShell în Windows Server 2016

Cmdlet-uri în PowerShell

Cmdlet (cmdlet) este o comandă Windows PowerShell care vă permite să interacționați cu și să manipulați obiectele sistemului de operare. Aceste comenzi fac parte din limbajul PowerShell. Cmdleturile sunt construite pe principiul „ Verb Substantiv”, despărțite printr-o cratimă (-); cu alte cuvinte, indicăm mai întâi ce să facem și printr-o cratimă - peste ce. De exemplu, cmdletul Get-Help, unde Get este un verb care înseamnă „ A primi", iar Help este un substantiv" Ajutor„în contextul PowerShell” Afișare - Ajutor". Cmdleturile PowerShell returnează rezultate ca obiecte, care este una dintre principalele diferențe față de linia de comandă Windows, unde comenzile returnează doar text pe ecran.

Pe lângă cmdleturile pentru obținerea datelor (Get), există și tipuri de cmdleturi precum:

  • Adăugare - adăugare de date;
  • Clar - clar;
  • Activare - activare;
  • Dezactivare - oprire;
  • Nou - creați;
  • Eliminare - îndepărtare;
  • Set - set;
  • Start - alergare;
  • Opreste opreste;
  • Export - export;
  • Import - import;
  • Si multe altele.

O listă completă de cmdleturi din Windows PowerShell poate fi vizualizată folosind cmdletul special Get-Command. De exemplu, rulați-l cu parametrul cmdlet -CommandType, ca urmare, veți vedea o listă de cmdleturi pe ecran.

cmdlet Get-Command -CommandType

După cum ați înțeles deja, cmdleturile au parametri cu care putem specifica acțiunile cmdlet-ului. Există parametri obligatorii și opționali, de exemplu, cmdletul Get-Command nu are parametri necesari.

Imaginea de mai jos arată o modalitate de a căuta un cmdlet după verb ( Parametrul verbului). În acest caz, am afișat o listă de cmdleturi care pot reporni ceva.

Echipă

Get-Command -Verb Restart

Pentru a căuta un cmdlet după substantiv, trebuie să utilizați parametrul Substantiv. De exemplu, mai jos avem o listă de cmdleturi care funcționează cu servicii.

Echipă

Serviciu Obținere-Comandă-Substantiv

Dacă nu ați găsit cmdletul necesar după numele complet, puteți utiliza masca în format *Text*.

Pipeline în PowerShell

Una dintre principalele caracteristici ale Windows PowerShell este capacitatea de a utiliza o conductă atunci când executați comenzi.

Transportor- acesta este transferul rezultatului muncii cmdlet-ului prin bara verticală (|) către un alt cmdlet. În același timp, după cum vă amintiți, cmdleturile din PowerShell funcționează cu obiecte și, respectiv, obiecte returnate, obiectele sunt, de asemenea, transferate de-a lungul conductei.

Folosind o conductă, puteți efectua sarcini complexe într-un mod simplu și convenabil, fără a fi nevoie să scrieți algoritmi și scripturi complexe.

De exemplu, să aflăm numele celui mai mare fișier din directorul C:\Windows\System32 ( exemplu simplu de conductă).

Echipă

Get-ChildItem -Calea „C:\Windows\System32” -Fișier | Sortare-Lungimea obiectului -Descendent | Selectați-Obiect -Primul 1

  • Get-ChildItem - cmdlet pentru obținerea obiectelor din directorul specificat;
  • Sort-Object este un cmdlet pentru sortarea obiectelor, în cazul nostru sortăm după dimensiunea fișierului ( lungime -Descrescătoare);
  • Select-Object este un cmdlet pentru selectarea proprietăților dorite ale unui obiect, în cazul nostru afișăm câmpuri standard și doar primul obiect, adică. dosar mare ( parametrul -Primul 1).

Toate cmdleturile sunt separate unele de altele printr-o bară verticală. Rezultatul fiecărui cmdlet este transmis ca intrare către un alt cmdlet, de exemplu. mai întâi primim toate obiectele din directorul specificat, apoi sortăm rezultatul și în final selectăm primul obiect.

Execuția de fundal a lucrărilor

Windows PowerShell are capacitatea de a rula joburi în fundal, este un mecanism prin care puteți rula o comandă ( de exemplu, care durează mult timp pentru finalizare) pe fundal, i.e. după lansare, revii la sesiunea curentă și poți continua să lucrezi fără a aștepta finalizarea comenzii. Veți avea nevoie de această caracteristică atunci când trebuie să rulați o comandă care durează mult timp și, după cum știți, în acest timp sesiunea shell PowerShell este blocată până la finalizarea comenzii și trebuie să continuați să lucrați.

Puteți gestiona toate sarcinile care rulează în fundal, de exemplu, să vizualizați lista de sarcini, să opriți sarcina, să ștergeți sarcina și, desigur, să vizualizați rezultatul sarcinii.

Windows PowerShell oferă următoarele cmdleturi pentru lucrul cu joburi de fundal:

  • Start-Job - începe o sarcină de fundal;
  • Stop-Job - opriți o sarcină de fundal
  • Get-Job - vizualizați o listă de sarcini de fundal;
  • Receive-Job - vizualizați rezultatul sarcinii de fundal;
  • Remove-Job - eliminați o sarcină de fundal;
  • Wait-Job - aduceți o sarcină de fundal în prim-plan pentru a aștepta să se termine.

Pentru a rula în fundal, trebuie să scrieți comanda Start-Job, iar între paranteze () comanda sau setul de comenzi pe care doriți să le executați în fundal.

De exemplu, să rulăm o sarcină ( arata lista de servicii) în fundal, apoi uitați-vă la lista de joburi de fundal și afișați rezultatul jobului nostru ( acestea. lista de servicii).

Rularea unei sarcini în fundal

Start-Job (Obține-Service)

Ne uităm la lista sarcinilor care rulează în fundal

Afișarea rezultatului jobului Job1

Primește Job Job1

După cum puteți vedea, avem o sarcină cu statutul " Efectuat”, adică a fost deja finalizat doar Get-Service funcționează rapid).

Pentru a vizualiza rezultatul sarcinii de fundal, de ex. cmdlet Get-Service, am executat comanda Receive-Job și i-am transmis numele jobului ( poate și valoarea id). Drept urmare, am afișat o listă de servicii.

Control de la distanță cu PowerShell

Windows PowerShell este conceput nu numai pentru uz local, ci și pentru executarea comenzilor de la distanță. Această caracteristică este necesară pentru a putea gestiona computerele de la distanță de la locul de muncă, de ex. rulați comenzile PowerShell.

Există mai multe modalități de control de la distanță:

  • Folosind parametrul -Numele calculatorului (multe echipe au). Cu alte cuvinte, treceți numele computerului pe care doriți să rulați comanda ca parametru. Metoda are dezavantajul că se limitează la executarea unei singure comenzi;
  • Prin sesiuni. Cmdlet Enter-PSSession (sesiune interactivă). În acest fel, vă conectați la un computer de la distanță și toate comenzile pe care le introduceți în shell-ul PowerShell vor fi executate pe computerul de la distanță în același mod ca și când ați tastat comenzi direct pe computerul de la distanță. Metoda are și dezavantajul că sesiunea este limitată la un singur computer;
  • Folosind cmdletul Invocare-Comandă. Folosind această metodă, puteți rula comenzi sau scripturi pe un singur computer sau pe mai multe.

De exemplu, pentru a vă conecta la un computer la distanță ( în exemplul de mai jos ServerName) sesiune interactivă, rulați următoarea comandă:

Introduceți-PSSession ServerName

Scripturi, funcții și module în Windows PowerShell

Dacă ați scris ceva algoritm, cel mai probabil veți dori să-l salvați pentru a-l utiliza pe viitor. Windows PowerShell are un mecanism de scripting în acest scop.

Esența acestui mecanism este următoarea, scrieți setul de comenzi de care aveți nevoie și îl salvați ca script - acesta este un fișier text simplu cu extensia .PS1.

Apoi, pentru a rula acest script, pur și simplu îl rulați în PowerShell. În acest caz, trebuie fie să specificați calea completă către fișierul script, fie să mergeți la directorul cu scriptul și să îl apelați după nume.

Important!

În mod implicit, scripting-ul este dezactivat pe Windows! Pentru a vedea politica de execuție a scriptului, rulați cmdletul Get-ExecutionPolicy. Ca rezultat, va returna politica actuală, de exemplu:

  • Restricţionat - blocarea execuţiei oricăror scripturi ( valoare implicită);
  • AllSigned - este permisă executarea de scripturi care au semnătură digitală;
  • RemoteSigned - este permisă execuția de scripturi locale, toate scripturile descărcate trebuie să fie semnate digital;
  • Nerestricționat - execuția oricăror scripturi este permisă ( nu este recomandat ca fiind nesigur!).

Trebuie să utilizați cmdletul pentru a permite rularea scripturilor. Set-ExecutionPolicy cu una dintre variantele de mai sus.

De exemplu, pentru a permite executarea scripturilor locale, rulați următoarea comandă și acceptați modificările apăsând Y.

Set-ExecutionPolicy RemoteSigned

Într-un script, puteți să transmiteți parametri, să îi faceți necesari sau să setați o valoare implicită.

Windows PowerShell oferă un mecanism pentru a vă crea propriile funcții, care, ca și cmdleturile încorporate, pot fi utilizate în shell-ul PowerShell.

Pentru a face acest lucru, trebuie să specificați cuvântul cheie Funcție și apoi să scrieți între paranteze () algoritmul pentru această funcție, adică. set de instructiuni ( de exemplu, o procedură folosită în mod obișnuit: creați un utilizator cu anumite drepturi, curățați anumite directoare și așa mai departe). Apoi trebuie să salvați toate acestea într-un script, dar numai cu extensia .psm1, deoarece acest fișier va fi deja un modul.

Asta nu este tot, acest fișier trebuie să fie plasat în directorul în care PowerShell caută module. Există mai multe directoare un director special în profilul utilizatorului, directorul în care este instalat PowerShell), pot fi vizualizate în variabilele de mediu PowerShell. Pentru a face acest lucru, executați următoarea comandă

Get-ChildItem Env:\PSModulePath | Format-Tabel -AutoSize

Odată ce plasați modulul pe care l-ați scris într-un director special, vă puteți accesa funcțiile precum comenzile PowerShell normale.

Mediu de scriptare integrat Windows PowerShell (ISE)

Pentru a facilita scrierea de scripturi, funcții și, în consecință, module, Microsoft a dezvoltat un program grafic special Mediu de scripting integrat(ISE) - Mediu de scripting integrat. Este foarte convenabil să lucrezi în acest program, în plus, are o funcționalitate puternică ( crearea multor file cu scripturi, zonă de ieșire, depanator încorporat și multe altele).

Îl poți rula astfel:

  • În Windows 7 - Start->Toate programele ->Accesorii ->Windows PowerShell ->Windows PowerShell ISE;
  • În Windows 10 sau Windows Server 2016 - Start->Toate programele -> Director Windows PowerShell ( in grupa W) -> Windows PowerShell ISE.

Notă! ISE nu va rula pe un sistem Windows Server instalat în varianta Server Core.

Captură de ecran a mediului PowerShell Integrated Scripting (ISE) în Windows Server 2016

Atât am, sper că ți-a fost de folos materialul! Noroc!

Top articole similare