Zece comenzi PowerShell pe care fiecare administrator Windows ar trebui să le cunoască. Introducere în Power Shell

În acest articol ne vom uita la o astfel de tehnologie de la Microsoft ca Windows PowerShell, vom vorbi despre ce este PowerShell, ce sunt cmdlet-urile și un pipeline, cum să scrieți scripturi și module și, de asemenea, vom atinge alte elemente la fel de importante și caracteristici utile Windows PowerShell.

Ce a contribuit la apariția Windows PowerShell?

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

La echipa șiruri de ferestre Există, de asemenea, posibilitatea de a efectua unele sarcini administrative și abilitatea de a scrie un algoritm de acțiuni, salvându-l ca script (fișier bat), în timp ce puteți utiliza anumite elemente de programare, de exemplu, folosiți variabile, constructe condiționate și chiar ceva de genul buclelor.

Majoritatea produselor software au o interfață de consolă, de ex. putem controla programul folosind linia de comandă, economisind în același timp resurse datorită absenței costului de rulare a unei interfețe grafice. Microsoft pentru sistemul de operare server sisteme Windows Serverul lansează chiar și ediții fără GUI ( Server Core, Windows Server 2016 chiar are Nano Server ), dar toate acestea nu sunt suficiente, deoarece capacitățile liniei de comandă sunt limitate, adică. scrie cateva logica complexa Nu vom putea automatiza nimic și, chiar dacă putem, va fi nevoie de timp și cunoștințe.

De asemenea, un dezavantaj al liniei de comandă este că pentru a gestiona pe deplin serverul folosim diverse utilități de consolă ale produselor software și, prin urmare, utilizarea liniei de comandă pentru administrare este de fapt dificilă, din punctul de vedere al faptului că toate aceste utilități au diferite sintaxă, parametri, metode de utilizare și în vederea îndeplinirii sarcini tipice, adică zilnic, trebuie să păstrați toate acestea în memorie, iar pentru a efectua sarcini atipice trebuie să citiți mai întâi ajutorul sau documentația.

Tehnologia Windows Script Host vă permite să efectuați toate sarcinile administrative ca 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ă se pot implementa logica complexa si algoritmi. În plus, cu ajutorul WSH gestionăm produse software printr-o interfață obiect, cu alte cuvinte, Windows Script Host este mult mai „ mai rece» decât linia de comandă. Dar nici această tehnologie nu a devenit instrumentul ideal pentru administrarea și automatizarea 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 de a aprofunda modele de obiecte Nu vor produse 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 apărut Windows PowerShell.

Ce este Windows PowerShell?

Windows PowerShell este un limbaj de scripting Windows și un shell de comandă conceput pentru administrarea și configurarea sistemelor de operare Windows. PowerShell este construit pe baza cadrului 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 munca lor cu PowerShell.

Cu Windows PowerShell puteți:

  • Accesați sistemul de fișiere;
  • Gestionează registrul;
  • Gestionarea serviciilor;
  • Gestionează procesele;
  • 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 pe care le puteți rula din linia de comandă, cum ar fi ipconfig, ping și altele. Acest lucru a fost făcut 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 plina sinonimele pot fi vizualizate rulând cmdletul Get-Alias).

Pentru a simplifica căutarea comenzii dorite, PowerShell are 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.

Odată ce comanda necesară a fost găsită, puteți consulta instrucțiunile de lucru cu această comandă, de exemplu. ajutor, există un cmdlet Get-Help special pentru aceste scopuri, de exemplu următoarea comandă va afișa ajutor pentru cmdlet-ul Get-Command:

Obține-Ajutor Obține-Comandă

Ajutorul în Windows PowerShell poate fi scurt, detaliat ( parametru -Detaliat), plin ( parametru -Full), ș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 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 venit ca o componentă care trebuia instalată.

Începând cu Windows 7 și Windows Server 2008 R2, PowerShell vine ca o componentă integrală a sistemului ( acestea. preinstalat, nu este nevoie să îl instalați). Mai jos este un tabel de corespondență între versiunea și versiunea PowerShell sistem 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 versiune noua PowerShell devine din ce în ce mai mult Unealtă puternică administrare, spre comparație, primul PowerShell avea aproximativ 130 de cmdlet-uri, iar în PowerShell 5.0 sunt deja peste 600 dintre ele!

A sti Versiune curentă PowerShell poate folosi proprietatea PSVersion a variabilei încorporate $PSVersionTable, de exemplu, rulaț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 program care sunt prezente în fiecare limbaj de programare, cum ar fi: condiții, bucle, gestionarea erorilor, lucrul cu variabile, obiecte și matrice.

Limbajul PowerShell are o sintaxă uniformă pentru scrierea comenzilor și o structură de denumire pentru aceste comenzi bazată pe principiul „ Verb-substantiv", ceea ce face ca acest limbaj să fie intuitiv atât pentru programatori, cât și pentru administratorii de sistem.

Windows PowerShell

Windows PowerShell este un mediu pentru executarea comenzilor și scripturilor în PowerShell. Acest shell are aceleași capacități 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» ( introdus în PowerShell 5.0).

Există mai multe moduri de a lansa PowerShell, de exemplu:

  • Din linia de comandă tastând PowerShell;
  • Prin caseta de dialog " A executa» ( scurtătură de la tastatură Win+R), tastând și PowerShell;
  • În Windows 7 - Start->Toate programele -> Accesorii -> Windows PowerShell -> Windows PowerShell;
  • În Windows 8.1 sau Windows Server 2012 R2 - Start->All Programs -> System Tools -> 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 obiectele sistemului de operare pentru a le gestiona. Aceste comenzi fac parte din limbajul PowerShell. Cmdleturile sunt construite conform principiului „ Verb-substantiv", despărțite printr-o cratimă (-); cu alte cuvinte, indicăm mai întâi ce trebuie făcut, iar cu o cratimă indicăm ce trebuie să facem. De exemplu, cmdletul Get-Help, unde Get este un verb care înseamnă " obține", iar Help este un substantiv" Ajutor" în contextul PowerShell " Arată – Ajutor" Cmdleturile PowerShell returnează rezultate ca obiecte, care este una dintre principalele diferențe față de promptul de comandă Windows, în care comenzile returnează doar text pe ecran.

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

  • Adăugare – adăugare de date;
  • Clar – clar;
  • Activare – activare;
  • Dezactivare – oprire;
  • Nou – creați;
  • Eliminare – îndepărtare;
  • Set – set;
  • Start - start;
  • 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, o listă de cmdleturi va fi afișată pe ecran.

cmdlet Get-Command -CommandType

După cum ați înțeles deja, cmdleturile au parametri cu care putem specifica acțiunile cmdlet-ului. Parametrii pot fi obligatorii sau 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 cmdlet-uri care pot reporni ceva.

Echipă

Get-Command -Verb Restart

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

Echipă

Serviciu Obținere-Comandă - Substantiv

Dacă nu găsiți cmdletul dorit după numele complet, puteți utiliza o mască în formatul *Text*.

Conductă în PowerShell

Una din principalele caracteristici ferestre PowerShell poate folosi o conductă atunci când execută comenzi.

Transportor– acesta este transferul rezultatului unui cmdlet printr-o bară verticală (|) către un alt cmdlet. În același timp, după cum vă amintiți, cmdleturile PowerShell lucrează cu obiecte și returnează obiecte; în consecință, obiectele sunt, de asemenea, transferate de-a lungul conductei.

Folosind un transportor puteți efectua sarcini complexe simplu și într-un mod convenabil fără a fi nevoie să scrie algoritm complexși scenarii.

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 ( parametru -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 sarcinilor

Windows PowerShell are capacitatea de a rula joburi în fundal, care este un mecanism prin care puteți rula o comandă ( de exemplu, care durează mult timp pentru finalizare) V fundal, adică după lansare, revii la sesiunea curentă și poți continua să lucrezi fără a aștepta finalizarea comenzii. Această ocazie Veți avea nevoie de el atunci când trebuie să rulați o comandă a cărei lucru necesită destul de mult timp. perioadă lungă de timpși, după cum știți, în acest timp sesiunea 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, vizualizați lista sarcinilor, opriți sarcina, ștergeți sarcina și, bineînțeles, vizualizați rezultatul sarcinii.

Windows PowerShell are 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 lista sarcinilor de fundal;
  • Receive-Job – vizualizați rezultatul unei sarcini de fundal;
  • Remove-Job – eliminați o sarcină de fundal;
  • Wait-Job – mutaț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 acolade () o comandă sau un set 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 uită-te la listă locuri de muncă de fundalși afișați rezultatul sarcinii noastre pe ecran ( acestea. lista de servicii).

Rulați o sarcină în fundal

Start-Job (Get-Service)

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

Afișarea rezultatului Job1

Primire-Job Job1

După cum puteți vedea, acum avem o sarcină cu statutul „ Efectuat", adică s-a terminat deja ( Get-Service funcționează rapid).

Pentru a vedea rezultatul sarcinii de fundal, de ex. cmdlet Get-Service, am executat comanda Receive-Job și i-am transmis numele jobului ( este posibilă și valoarea identificatorului). Ca urmare, am afișat o listă de servicii.

Control de la distanță folosind PowerShell

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

Există mai multe metode de control de la distanță:

  • Folosind parametrul -Numele calculatorului (multe echipe o au). Cu alte cuvinte, treceți numele computerului pe care doriți să executați comanda ca parametru. Metoda are dezavantajul de a se limita la executarea unei comenzi;
  • Utilizarea sesiunilor. 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 PowerShell vor fi executate pe computerul de la distanță în același mod ca și cum ați tastat comenzile direct pe computerul de la distanță. Metoda are și dezavantajul că sesiunea este limitată la un singur computer;
  • Folosind un cmdlet Invocare-Comandă. Prin utilizarea aceasta metoda 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) într-o sesiune interactivă, rulați următoarea comandă:

Introduceți-PSSession ServerName

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

Dacă ați scris un 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.

Esenta acest mecanism apoi, scrieți setul de comenzi de care aveți nevoie și îl salvați ca script - este simplu fisier text cu extensie.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, rularea scripturilor pe Windows este interzisă! Pentru a vedea politica de execuție a scriptului, rulați cmdletul Get-ExecutionPolicy. Ca rezultat, va returna politica actuală, de exemplu:

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

Pentru a permite rularea scripturilor, trebuie să utilizați cmdletul Set-ExecutionPolicy cu unul dintre parametrii de mai sus.

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

Set-ExecutionPolicy RemoteSigned

Puteți transmite parametri unui script, îi puteți face obligatorii sau puteți seta o valoare implicită.

Windows PowerShell oferă un mecanism pentru crearea propriilor funcții, care, la fel ca cmdleturile încorporate, pot fi utilizate în shell-ul PowerShell.

Pentru a face acest lucru trebuie să specificați cuvânt cheie Funcție și apoi între acolade () scrieți algoritmul pentru această funcție, adică. set de comenzi ( de exemplu, o procedură folosită frecvent: 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 plasat în directorul în care PowerShell caută module. Există mai multe astfel de directoare ( director special din profilul utilizatorului, directorul în care este instalat PowerShell), pot fi vizualizate în variabile 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 ca comenzi 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 scriptare integrat. Este foarte convenabil să lucrezi în acest program și are, de asemenea, funcționalități puternice ( crearea de mai multe 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 ediția Server Core.

Captură de ecran a mediului de scriptare integrat PowerShell (ISE) în Windows Server 2016

Asta e tot pentru mine, sper ca materialul ti-a fost de folos! Noroc!

Windows PowerShell 2.0 a fost lansat cu Windows 7 și Windows Server 2008 R2 ca o componentă integrală a sistemului. În plus, a doua versiune este disponibilă pentru alte sisteme precum Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1 și Windows Server 2008.

Dacă dintr-un motiv oarecare nu aveți PowerShell instalat, atunci iată un link de unde puteți descărca PowerShell, precum și pentru a afla informații detaliate despre acest shell.

Windows PowerShell este construit pe deasupra Microsoft NET Cadru și integrat cu acesta. În plus, PowerShell oferă acces usor la COM și ADSI, precum și vă permite să rulați comenzi comune în linia de comandă pentru a crea un mediu unificat în care administratorii ar putea efectua diverse sarcini pe local și sisteme de la distanță.

Lucrul cu echipe

Dezvoltatorii PowerShell au echipat acest shell cu un limbaj de scripting special construit în conformitate cu standardul .NET Framework. O comandă din PowerShell se numește cmdlet sau cmdlet în versiunea originală. Un cmdlet este similar cu o funcție prin aceea că o face sarcina specifica, de exemplu, preia conținutul unui folder sau actualizează o intrare de registry și are parametri care pot modifica rezultatul comenzii.

PowerShell are peste 100 de comenzi încorporate. De asemenea, puteți crea comenzi suplimentare, dar trebuie să utilizați un limbaj standard .NET, cum ar fi Visual Basic.NET sau C#.

Fiecare opțiune de comandă este o combinație verb-substantiv. Acest lucru se datorează faptului că Microsoft a dorit să utilizeze o schemă de denumire consecventă pentru a face PowerShell mai ușor de învățat și extins. Verbul indică acțiunea care trebuie efectuată, iar substantivul indică tipul de obiect asupra căruia va fi efectuată acțiunea. De exemplu, comanda Get-ChildItem citește o listă de articole din directorul sau containerul de lucru curent, cum ar fi registry. Pentru a rula o comandă, trebuie să o introduceți în linia de comandă PowerShell și să apăsați Enter. Rezultatul comenzii va fi afișat imediat sub comanda introdusă.

Orez. 1. Comanda Get-ChildItem

Comenzi pentru a obține ajutor

PowerShell vine cu un set de fișiere de ajutor și mai întâi trebuie să învățăm cum să lucrăm cu aceste materiale de ajutor. Pentru a afla ce comenzi sunt disponibile în PowerShell, utilizați comanda Get-Command. Figura 2 arată rezultatul acestei comenzi, aceasta este o listă de comenzi. Această listă arată numele și sintaxa comenzilor, dar nu descrie ceea ce face fiecare comandă.

Fig 2. Get-Command

Puteți utiliza comanda Get-Help pentru a obține aceste informații. Dacă introducem doar Get-Help, vom primi ajutor pentru el însuși.

Orez. 3. Comanda Get-Help

După cum puteți vedea din ajutorul comenzii Get-Help, pentru a obține ajutor pentru o anumită comandă trebuie să introduceți numele comenzii imediat după Get-Help. Să ne uităm la ajutorul pentru comanda Get-Command pe care o știm deja. Pentru a face acest lucru, introducem:

Orez. 4. Comanda ajutor. Obține-Ajutor Obține-Comandă

Get-Command în acest caz este un parametru al comenzii Get-Help și, la fel ca parametrii de comandă din linia de comandă cmd.exe, parametrii de comandă PowerShell oferă informațiile de care comenzile au nevoie pentru a-și face treaba.

Acum să vedem cum funcționează totul. Să ne uităm la un exemplu. Una dintre sarcinile tipice ale unui administrator de sistem este să citească fișierele text. Să ne uităm la lista de cmdlet-uri care încep cu Get (Get-Help, Get-Command etc.). Pentru a face acest lucru, vom folosi Get-Help și vom specifica Get ca parametru:

Orez. 5. Get-Help Obține comanda

Am primit o listă de comenzi care încep cu Get. Pentru a lucra cu fișiere, vom folosi comanda Get-Content. Să ne uităm la informațiile de ajutor despre comanda Get-Content. Pentru a face acest lucru, introducem:

Orez. 6. Comanda Get-Help Get-Content

După cum se arată în Figura 6, comanda Get-Help Get-Content returnează o descriere a comenzii Get-Content și informații despre sintaxa acesteia. Din acest ajutor, am aflat că comanda Get-Content returnează conținutul unui element, care în acest caz indică orice tip de fișier de pe sistem. În trecut, un administrator ar fi trebuit să folosească comanda For pentru a lucra cu fișiere batch sau un File-SystemObject în Windows Script Host (WSH), dar în PowerShell trebuie doar să rulați comanda Get-Content. Pentru a obține mai mult informatii detaliate despre sintaxă, trebuie să adăugați parametrul -full la comandă:

Orez. 7. Comanda Get-Help Get-Content -full

Rețineți că parametrul -full nu este o valoare primară. Parametrii de acest tip sunt numiți parametri de comutare, deoarece par să schimbe linia de comportament a comenzilor.

Figura 7 prezintă unele dintre informațiile returnate de această comandă. Administratorul va trebui să deruleze sau să redimensioneze fereastra de pe computerul său, astfel încât să poată fi vizualizat tot conținutul. Secțiunea PARAMETRI a ajutorului descrie parametrii care pot fi adăugați la o comandă pentru a modifica rezultatul pe care îl returnează. Vă rugăm să rețineți două puncte importante în parametri: Necesar?(obligatoriu engleză) și Poziţie?(Poziția engleză).

Paragraf Necesar?(Engleză obligatorie) indicați că este acest parametru obligatoriu sau nu. Când este necesară o variabilă? (Necesar) este adevărat, parametrul trebuie inclus în comandă. Ce se întâmplă dacă variabila este necesară? (Engleză obligatorie) este setat la false, atunci acest parametru este opțional și poate fi omis când se utilizează comanda.

Sens Poziţie?(Poziție) vă permite să judecați dacă parametrului trebuie să i se dea un nume sau dacă poate fi referit după poziția sa. Când este variabila Poziție? (Poziție) i se atribuie valoarea numită, ceea ce înseamnă că atunci când vă referiți la acest parametru, trebuie să specificați numele acestuia. Când este valoarea variabilei Poziție? (Poziția) este exprimată ca număr; parametrul poate fi menționat prin numele său sau pur și simplu indicat prin valoarea parametrului în poziția sa corectă.

De exemplu, așa cum se arată în Figura 8, atunci când executați comanda Get-Content, trebuie să specificați parametrul -Path; să ne uităm la acest parametru mai detaliat.

Orez. 8. Parametru -Cale

În variabilă Necesar? merită valoarea Adevărat, aceasta înseamnă că acest parametru este necesar pentru comanda Get-Content. În variabilă Poziţie? Valoarea este 1, ceea ce înseamnă că nu trebuie să specificați numele parametrului atunci când îl introduceți, trebuie doar să îl introduceți imediat după numele comenzii (prima poziție).

Orez. 9. Comanda Get-Content E:01.txt

Unde E:01.txt este parametrul -Path

Orez. 10. Fișier E:01.txt.

Dacă valoarea unui parametru conține spații, valoarea trebuie să fie cuprinsă între ghilimele.

În secțiunea de ajutor OPȚIUNI Fiecare nume de parametru este urmat de informații incluse între paranteze unghiulare (< >). Aceste informații indică tipul de date care ar trebui să fie valoarea parametrului. După cum se arată în Figura 8, valoarea parametrului -Path trebuie să fie un șir. Dacă este indicat numele tipului paranteza patrata(șir), aceasta înseamnă că o matrice de șiruri poate fi utilizată ca valoare a parametrului. Dacă utilizați parametri de comutare, cum ar fi parametrul -Full, care nu acceptă valori, tipul de date va fi specificat ca .

Orez. 11. Parametrul -Full

O altă caracteristică PowerShell demnă de remarcat care se referă la parametri este caracteristica care completează automat combinația parametru-nume. Utilizatorul trebuie doar să introducă suficiente litere pentru a alcătui numele parametrului, astfel încât să poată fi distins de alți parametri. Da, echipa Obține-Ajutor Obține conținut -full este echivalent cu comanda Get-Help Obține-Conținut -ful.În secțiunea de ajutor NOTE Există, de asemenea, exemple despre cum poate fi utilizată această sau acea comandă. Figura 12 prezintă 3 exemple de utilizare a comenzii Get-Help.

Orez. 12. Exemple de utilizare a comenzii Get-Help

Obțineți ajutor cu concepte

PowerShell vine cu un set de fișiere de ajutor care oferă o prezentare generală a diferitelor concepte. Fiecare fișier începe cu caracterele " despre_" și se termină cu numele secțiunii. A vedea lista alfabetica despre secțiuni, rulați comanda:

Orez. 13. Comanda Get-Help about*

Pentru a vizualiza informații despre un anumit subiect, trebuie pur și simplu să includeți în valoarea parametrului Numele complet Subiecte. De exemplu, să ne uităm la ajutorul despre aliasuri. Pentru a face acest lucru, executați comanda:

Orez. 14. Comanda Get-Help about_aliases

Figura 14 prezintă unele dintre datele de ajutor care sunt obținute ca urmare a comenzii Get-Help about_aliases. După cum putem vedea, fișierul de ajutor oferă o prezentare generală a acțiunilor care vizează crearea și gestionarea aliasurilor în PowerShell.

Folosind aliasuri

Unele nume de comenzi pot fi destul de lungi, iar acest lucru poate fi enervant dacă trebuie să introduceți comenzi de la tastatură din nou și din nou. Din fericire, dezvoltatorii PowerShell au inclus posibilitatea de a folosi aliasuri pentru a se referi la comenzi. Un alias este un nume alternativ care este de obicei mult mai scurt decât numele real al comenzii. PowerShell include o serie de aliasuri încorporate, pe lângă care utilizatorii își pot crea propriile aliasuri.

Pentru a vedea aliasurile disponibile în timpul sesiunii curente, trebuie să rulați comanda Get-Alias ​​​​:

Orez. 15. Comanda Get-Alias ​​​​

Sesiunea curentă se referă la conexiunea curentă la procesorul PowerShell. Când pornește PowerShell, utilizatorul începe o nouă sesiune; această sesiune continuă până când utilizatorul închide PowerShell, încetând astfel conexiunea. Pe lângă toate aliasurile încorporate și comenzile asociate acestora, Get-Alias ​​afișează toate aliasurile create în timpul sesiunii curente, precum și aliasurile definite în profiluri, care sunt setări de configurare definite de utilizator încărcate în PowerShell de fiecare dată când shell-ul este pornit.

Dacă trebuie să vedeți aliasurile asociate cu o anumită comandă, fiți mai precis cu comanda Get-Alias ​​​​. De exemplu, pentru a vedea aliasurile asociate cu Get-ChildItem, rulați comanda:

Orez. 16. Comanda Get-Alis -definition Get-ChildItem

După cum se arată în Figura 16, PowerShell include trei alias-uri pentru comanda Get-ChildItem: gci, ls și dir. Puteți folosi oricare dintre ele în locul numelui comenzii. Astfel, fiecare dintre următoarele patru comenzi listează conținutul directorului C::

Orez. 17. Comenzile Get-ChildItem c: și dir c:

Dacă dorim să ne creăm propriul alias în PowerShell, atunci comanda Set-Alias ​​ne va ajuta. Să creăm un alias pentru comanda Get-Help. Folosim abrevierea hlp. Comanda de care avem nevoie va arăta astfel:

Orez. 18. Comanda Set-Alias ​​​​hlp Get-Help și aliasul hlp creat

Apoi, ori de câte ori trebuie să rulați comanda Get-Help, puteți utiliza aliasul hlp. Puteți utiliza acest alias până la sfârșitul sesiunii (adică până când închideți PowerShell). Vă rugăm să rețineți că atunci când definiți un alias, nu există nicio opțiune de a include parametri; puteți utiliza doar numele comenzii. Dacă doriți să definiți o legătură către o comandă și parametrii acesteia, ar trebui să creați functie speciala.

Concluzie

Ați învățat despre afișarea tuturor comenzilor disponibile în PowerShell și cum să le afișați informații generale pentru fiecare dintre aceste comenzi. Continuați și studiați ce fac aceste echipe. Experiment cu diverși parametriși învață să creezi și să folosești aliasuri și în curând vei vorbi fluent în PowerShell.


Am văzut deja că acest lucru este destul de simplu și instrument eficient pentru a îndeplini sarcinile de zi cu zi. Cu toate acestea, este absolut imposibil să înțelegem adevăratele capabilități ale PowerShell din câteva exemple și un studiu superficial, deoarece înainte anumit punct nu poți zdruncina sentimentul de ușurință artificială. Deci este PowerShell un instrument esențial pentru Windows sau este o jucărie pentru tocilari? Să ne dăm seama.

Informatie scurta

PowerShell a fost lansat oficial în 2006 și avea scopul de a înlocui interpretul de linie de comandă cmd extrem de limitat. Aceasta a fost deja a doua încercare de înlocuire; Windows Script Host, lansat cu 8 ani mai devreme, a eșuat din cauza lipsei de documentație încorporată și a lipsei integrării shell-ului.

Ei bine, PowerShell a ținut cont de cele mai multe dintre greșelile predecesorilor săi, la 3 ani de la momentul prezentării a fost lustruit la o formă decentă și a apărut în cele din urmă în fața armatei administratorilor de sistem într-o formă foarte plăcută.

Cmdlet-uri pe conductă

Baza PowerShell este cmdleturile. Dacă știi chiar și puțin Limba engleză, atunci ne-am dat seama deja că numele „cmdlets” provine de la elocventul „cmdlet”. Structura lor include comanda reală (verbul) și obiectul (substantivul). De exemplu: Get-Process, Sort-Object, Rename-Item și așa mai departe. Împărțirea, după cum puteți vedea, se realizează prin semnul „-”. Există o listă limitată de cmdleturi utilizate de sistem în mod implicit, dar începând cu PowerShell 2.0 vă puteți crea propriile cmdleturi. Puteți citi mai multe despre această procedură pe oficial Pagina Microsoft. Apropo, Versiune curentă 5.1 a apărut în august anul trecut.

Un alt concept de bază în PowerShell este o conductă. O conductă este o procedură de transmitere a ieșirii unui cmdlet ca intrare către următorul. Transportorul este desemnat „|” , dar în practică această intrare pare extrem de simplă:

Get-Process | Sortați CM

După cum puteți vedea din intrare, în codul de la sfârșitul fiecărei rânduri puneți „;” nu este necesar, dar acest semn poate fi folosit pentru a separa cmdlet-uri:

Get-Process; Obține ajutor

Totul este convenabil și frumos.

Ei bine, principalul lucru în PowerShell sunt, desigur, scripturile. Aici, ca în orice limbaj care se respectă nivel inalt Este posibil să lucrați cu variabile, funcții, declarații condiționale, bucle, excepții etc. În general, nu veți experimenta limitări semnificative în funcționalitate.

Comoditate și viteză

Desigur, dorind să răspundă nevoilor clienților noștri și să le facă viața cât mai ușoară posibil, un imens Echipa Microsoft a creat un produs care este convenabil și de înțeles chiar și pentru oamenii departe de programare. Imaginați-vă pentru o clipă că sunteți administrator de sistem într-un birou. Trebuie să verificați dacă angajații se angajează în prostii la locul de muncă. Cel mai simplu mod de a face acest lucru este să căutați și să încheiați procesul „greșit” pe computer în directorul activ:

$proc = "Proces_greșit"
$strCategory = „calculator”
$objDomain = Sistem de obiect nou.DirectoryServices.DirectoryEntry
$objSearcher = Sistem de obiecte noi.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.Filter = ("(objectCategory=$strCategory)")
$colProplist = "nume"
foreach ($i în $colPropList)($objSearcher.PropertiesToLoad.Add($i))
$colResults = $objSearcher.FindAll()

Foreach ($objResult în $colResults)
{
$objComputer = $objResult.Properties
$objComputer.name
if (Test-Conexiune -Count 2 -ComputerName $objComputer.name -Quiet)
{
$ps = Get-WmiObject Win32_Process -Filter "Name="$proc"" -ComputerName $objComputer.name

Foreach ($i în $ps)
{
$rezultat = $i.Terminate()
if ($result.ReturnValue -eq 0) ("Succes $comp")
else("Eroare $comp")
}
}
}

Wromg_Proc - numele procesului pe care îl căutați, de exemplu, wmplayer.exe. Prima parte a scriptului este dedicată găsirii computerului nostru, a doua AD, a doua lucrului efectiv cu procesul. În ciuda faptului că din punct de vedere vizual o astfel de înregistrare poate fi dezamăgitoare pentru un începător, de fapt, cu cunoștințe de engleză, puteți descifra cu ușurință codul.

Dar pentru comoditate, așa cum a fost obiceiul de mult timp, Microsoft a trebuit să plătească un preț considerabil. Printre sacrificiile necesare se numără sintaxa „rătăcitoare” cu simplificări, care nu le permite începătorilor să citească liber codul colegilor lor mai experimentați și libertăți nejustificate în design, inclusiv cod sursa. Dar principalul lucru pe care trebuie să-l sacrifici este viteza. Codul executat în PowerShell poate fi de câteva ori mai lent decât echivalentul Linux al bash. Și dacă atunci când lucrați numai cu propria mașină, acest lucru nu este prea vizibil, atunci când faceți service zeci și sute calculatoare la distanță pierzi ore de timp în loc de zeci de minute.

Încheiați cu o listă de referințe

Nu știu dacă ați devenit interesat de PowerShell ca urmare a acestei operațiuni, dar dacă da, atunci nu vă va fi dificil să găsiți restul informațiilor. Spre deosebire de multe alte limbi, în segmentul rus al internetului există o mulțime de informatii de calitate PowerShell pentru oameni de orice nivel de calificare.

În administrație este întotdeauna loc de creativitate. Vrei să faci ceva automatizare? sarcină de rutină? Vă rog! Trebuie să verificați în mod regulat ceva pentru activitate? Nici o problemă! Doriți să procesați un raport uriaș și să afișați numai date relevante? E posibil și asta. Toate acestea și multe alte sarcini sunt cel mai bine rezolvate folosind scripturi, iar PowerShell este alegerea optimă în cazul Windows.

Ce este PowerShell și de ce este bun?

Utilizatorii UNIX și Linux, și la un moment dat și macOS, sunt obișnuiți să aibă mereu la îndemână Bash - un instrument ușor demodat, dar universal și puternic, cu care puteți face lucruri uimitoare cu doar câteva rânduri. Înregistrați un script nou în cron - și ați terminat, rulează deja pe computer sau server și face în liniște ceva util.

Revenind la Windows (și uneori nu te poți descurca fără el), înțelegi că scripturile .bat, deși bune, nu te salvează întotdeauna: capacitățile lor sunt foarte limitate. Și dacă tot credeți că PowerShell este un lucru necunoscut pentru care trebuie să preluați și să configurați ceva, atunci nu vă grăbiți să trageți concluzii - dacă vă uitați la el, nu este deloc rău.

Windows PowerShell este un instrument de automatizare extensibil, open-source, care constă dintr-un shell (linie de comandă) și un limbaj de scripting. A fost afișat pentru prima dată în 2003 (numit atunci Monad). PowerShell 2.0 a fost lansat cu Windows 7 și Windows Server 2008 R2 și de atunci a fost o caracteristică standard în Windows. A fost inclus chiar și în Windows XP SP3. PowerShell este construit pe deasupra și integrat cu .NET Framework. PowerShell poate accesa COM, WMI și ADSI și, bineînțeles, execută și comenzi de consolă.

În general, posh are legături puternice cu produse Microsoft, fie Director activ sau poștală Server de schimb. Acest lucru vă permite să le accesați prin consolă și să emiteți comenzi fără a vă conecta la echipamentul serverului.

Dacă nu erați interesat de PowerShell înainte, atunci cel mai probabil aveți a doua versiune. Recomand să faceți upgrade la cel puțin al treilea - conține mult mai multe funcții și sfaturi utile. Fără a intra în detalii, PowerShell 2.0 include aproximativ o duzină de module și aproximativ 350 de comenzi, iar PowerShell 3.0 are deja aproximativ 2.300 de cmdlet-uri din peste 70 de module. „Hackerul” a scris și despre cum diferă cea mai nouă versiune PowerShell 5 de Windows 10.

Alegerea unui mediu de dezvoltare și a instrumentelor

Acum să ne dăm seama unde este cel mai convenabil să scriem cod. Puteți, desigur, și în Notepad, Notepad++ sau Sublime. Dar, în acest caz, aceasta nu este cea mai înțeleaptă alegere a editorului. Cel mai bine este să începeți să vă familiarizați cu PowerShell înarmat cu .


Acesta nu este nici măcar un editor, ci un mediu de dezvoltare aproape complet. Există o caracteristică IntelliSense care vă permite să vizualizați o listă de cmdlet-uri și parametrii acestora, variabilele, utilitățile și multe altele. Fragmentele sunt acceptate, este posibil să extindeți setul de funcții prin diverse suplimente. Fereastra Comenzi este, de asemenea, foarte utilă. În el puteți compune comenzi în modul vizual: selectați un modul, găsiți cmdlet-ul dorit și setați parametrii necesari acestuia. Comanda rezultată poate fi copiată în consolă sau executată imediat. În general, un fel de designer pentru admin. Și, desigur, există evidențierea sintaxei, un depanator și multe altele.

Cu toate acestea, PowerShell ISE are și concurenți demni. Unul din ei - .

PowerGUI este o extensie vizuală a PowerShell. Vă este ușor să vă construiți propriile scripturi înainte de a alege cmdleturile de care aveți nevoie. Luați ceea ce aveți nevoie pentru a rezolva problema și glisați și plasați părți ale codului până când obțineți un script. Una dintre principalele caracteristici ale PowerGUI este Power Pack-urile, scripturi gata făcute publicate de comunitatea de utilizatori și puse la dispoziție pentru acces gratuit. Există comenzi simple precum adăugarea de utilizatori și unele complexe - de exemplu, gestionarea comutatoarelor și a mașinilor virtuale. Toate acestea pot fi ușor completate și modificate în funcție de nevoi.


Companiile Sapien sunt un mediu mai avansat, care este conceput pentru dezvoltarea comună a unui proiect de către un număr mare de participanți. Dacă ați lucrat vreodată cu Visual Studio, cred că veți observa asemănările. Unele caracteristici utile ale PowerShell Studio includ panoul Panglică, suport pentru depanare la distanță și funcții de compilare care vă permit să includeți scripturi în fișierele executabile. Există sprijin versiuni diferite PowerShell.


Merită menționat și Script Browser pentru Windows PowerShell ISE. Acesta nu este un mediu de dezvoltare, ci un instrument foarte interesant dezvoltat de Microsoft. Script Browser oferă acces la o bază de date de scripturi gata făcute care pot fi folosite ca mostre pentru scrierea propriului cod. Acest lucru poate analiza și codul pe care îl scrieți și vă poate sugera cum să-l îmbunătățiți.


Câteva trucuri utile

După ce ați dat seama de editor, puteți începe să scrieți cod. PowerShell nu este un limbaj complicat și cred că o vei înțelege rapid. Comenzile de aici se numesc cmdlet-uri și fiecare dintre ele constă din două părți. Mai întâi vine acțiunea, de exemplu Get, Set, Add, Invoke, Remove. Apoi indică spre ce vizează acțiunea: Service, VM, AzureAccount, DHCPServerSetting. Fiecare parte este separată de cealaltă printr-o cratimă. Se dovedește, de exemplu, obține-proces. Aceasta, apropo, este o comandă utilă care afișează o listă de procese. Să zicem, dacă scrii

obține - procesează BadTh *

vom vedea ceva de genul:

Se ocupă de NPM (K ) PM (K ) WS (K ) VM (M ) CPU (e) Id ProcessName

------------------------

28 4 - 210844 - 201128 - 163 25,67 2792 BadThread

Acum puteți încheia procesul de înghețare:

Îl puteți vizualiza recursiv, deși cu o logică puțin mai complexă:

De asemenea, puteți face

Apropo, pentru fiecare câmp din fereastra de opțiuni cont sau un computer pe care îl puteți accesa și citi datele. În acest fel puteți face secțiuni întregi. Iată, de exemplu, o interogare bazată pe date despre numere de telefon:

Obține - AdUser - Filtrare * - Proprietăți OfficePhone | FT OfficePhone, UserPrincipalName

PowerShell vs bat

Uneori, o problemă poate fi rezolvată fie folosind metoda de modă veche, fie folosind Ajutor PowerShell. Recomand să nu fii leneș și să folosești PS, fie și pur și simplu pentru că astfel îl vei învăța mai repede și îl vei putea folosi în mai multe situatii dificile. În plus, veți aprecia treptat sintaxa acesteia - mai elegantă și mai consistentă. Iată câteva exemple despre cum au fost făcute lucrurile înainte și cum pot fi făcute folosind PowerShell.

Următoarea linie de comandă va reporni computerul cu o întârziere de zece secunde:

Iată cum puteți reporni serviciul dnscache (sau oricare altul) prin bat:

sc stop dnscache

sc începe dnscache

Este posibil ca utilizatorii experimentați ai sistemului de operare Windows 10 să fi auzit despre utilitarul de comandă Șiruri PowerShell. Cei cu experiență în lucrul cu Windows 7 și 8.1 pot fi, de asemenea, familiarizați cu acesta. După ani de utilizare a aplicației de linie de comandă Windows și a fișierelor .bat, este timpul să faceți cunoștință cu un instrument mai puternic.

PowerShell este un plus valoros la listă Instrumente Windows iar scara sa poate descuraja unii utilizatori. Ce este - un limbaj de scripting sau un shell de comandă? Nu vă faceți griji: în ciuda capacităților extinse, oricine poate stăpâni PowerShell.

Pasul 1: Instalare

În primul rând, avem nevoie de utilitarul PowerShell în sine. Dacă utilizați Windows 10, aveți deja instalat PowerShell 5. Windows Update Actualizarea a 10-a aniversare folosește versiunea 5.1, dar diferența nu este vizibilă. Windows 8 și 8.1 folosesc PowerShell 4, care este, de asemenea, destul de suficient. Instalarea PowerShell pe Windows 7 nu va cauza probleme, dar va trebui totuși să faceți câțiva pași suplimentari. Î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ță GUI completă cunoscută sub numele de Integrated Scripting Environment (ISE). Pentru începători, cel mai bine este să utilizați consola PowerShell, o interfață simplă în stil linie de comandă Windows bazată pe text sau chiar DOS 3.2.

Pentru a rula PowerShell ca administrator în Windows 10, faceți clic pe butonul Start și derulați în jos la Windows PowerShell. Pe Windows 8.1, căutați Windows PowerShell în folderul System din Windows. În Windows 7, shell-ul se află în folderul Accesorii. Ca de obicei Utilizator PowerShell poate fi rulat exact în același mod folosind butonul din stanga mouse-ul în loc de cel potrivit.

Puteți utiliza căutarea pe orice versiune de Windows. Pentru confort utilizare ulterioară 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 dosarul curent.

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

Pasul 3: Instalați fișierele de ajutor

Echipe ca CDȘi dir nu sunt comenzi PowerShell active. Acestea sunt așa-numitele aliasuri - înlocuitori pentru comenzile reale PowerShell. Aliasurile sunt utile pentru cei care au o experiență vastă cu linia de comandă. Cu toate acestea, ele nu ating adâncimea PowerShell.

Pentru a începe să cunoaștem Capacitățile PowerShell, formați Ajutorși comanda de care aveți nevoie. Captura de ecran arată comanda .

Echipă Ajutor spune ca dir este un alias pentru comanda PowerShell Get-ChildItem. Dacă tastezi get-childitem V PS C:\>, veți vedea același lucru ca atunci când utilizați comanda dir.

După cum s-a menționat î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, în acest caz, Help for NetWNV și SecureBoot nu au fost instalate. Când totul este gata, sistem complet ajutorul va oferi întotdeauna sfaturile necesare.

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

get-help get-childitem -exemple

dă șapte exemple detaliate utilizare get-childitem. Echipă

get-help get-childitem -detaliat

include aceste șapte exemple și explicatii detaliate fiecare parametru din cmdlet get-childitem.

Pasul 4: Obțineți ajutor pentru setări

În captura de ecran este posibil să fi observat două liste mai jos SINTAXĂ Pentru get-childitem. Având două sintaxe diferite înseamnă că există două moduri de a rula cmdletul. Cum să păstrăm sintaxa separată una de cealaltă și ce înseamnă parametrii? Răspunsul este simplu dacă știi trucul.

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

get-help get-childitem -full

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

Revizuind descrierile parametrilor, veți observa că get-childitem face posibilă obținerea unui obiect copil(cum ar fi numele unui subdosar sau numele fișierului) în locație 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ă parametrului -recurs). Întrucât

get-childitem „HKLM:\Software”

returnează o listă cu toate cheile de registry nivel superior V 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 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 utilizare o singură schemă verb-substantiv. Toate cmdleturile PowerShell folosesc această convenție; folosesc un verb înaintea unui singur substantiv. Acest lucru îi va atrage pe cei care au suferit cândva de nume de comenzi inconsecvente în limbile VB și VBA.

Aruncă o privire la cele mai comune cmdleturi:

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

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

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

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

eliminare-articol: Șterge fișierele și folderele

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

obţine-serviciu: Primește serviciile care rulează pe un computer local sau la distanță

invoke-webrequest: Preia conținut dintr-o pagină web de pe Internet

Pentru a vedea cum funcționează un anumit cmdlet, utilizați obține ajutor ca în 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

Tastâ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 va completa Element de copiere. Dacă tastați incorect un cmdlet și PowerShell nu îl poate recunoaște, se oferă o descriere completă a faptelor greșite.

Încercați acest cmdlet:

invoke-webrequest askwoody.com

Vei primi lista finaliștilor anteturi, imagini, link-uri și alt conținut al paginii web. Vă rugăm să rețineți în obține ajutor la listă invoke-webrequest, care „returnează o colecție de formulare, link-uri, imagini și altele elemente importante HTML" este exact ceea ce ar trebui să fie afișat pe ecran.

Unele cmdleturi vă ajută să gestionați 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ă

Diferiții parametri 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 substantivul serviciu. Iată lista lor:

Obține-Service

Serviciu nou

Restart-Service

CV-Serviciul

Set-Service

Start-Service

Stop-Service

Suspendare-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 (> simbol) și conductele (simbol |) preiau rezultatul unei acțiuni și îl atașează la o altă locație. De exemplu, puteți redirecționa rezultatul comenzii dirîntr-un fișier text sau transmiteți rezultatul comenzii ping la echipa găsi pentru a filtra rezultate interesante precum

dir > temp.txt

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

Aici la echipa a doua găsi caută un șir pachete, preluat de pe adresa askwoody.com de către echipă pingși concatenează 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ă veți avea nevoie de ceva de genul

ping askwoody.com | pachete select-string | out-file temp2.txt

Utilizarea redirecționării și a conductelor îmbunătățește foarte mult linia de comandă Windows: în loc să derulați la nesfârșit ecranul în căutare șir de text poate fi filtrat comenzile necesare Windows.

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ă vine atunci când aliniezi obiectele. 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ă. Obiectele rămase nu sunt atât de elementare.

Cum să înțelegi asta? Utilizați cmdlet obţine-membru. Dacă doriți să știți prin ce tip de obiect procesează 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 puteți afla rezultatul cmdlet-urilor:

obţine-proces | 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 get-process Handle, Nume, NPM, PM, SI, VMȘi W.S..

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

get-command -Parametertype System.Diagnostics.Process

Acest cmdlet oferă 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 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ă cu toate procesele care rulează pe un computer cu numele „svchost”, adică doriți să potriviți proprietatea Nume proces svchost. Utilizați comanda:

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

Cmdlet se uită la 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ă ne uităm, de exemplu, la comenzile PowerShell solicitate frecvent.

Aceste comenzi funcționează numai pe Windows 10 și numai atunci când rulați PowerShell ca administrator. Sunt proiectate pentru a fi reinstalate aplicații preinstalate Windows 10 și poate fi util pentru cei 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 roșii și, când comanda este finalizată, reporniți computerul; Toate programe preinstalateîn Windows 10 vor apărea în locurile lor.

Iată cum funcționează această comandă. Get-AppXPackage verifică toate pachetele de aplicații din profilul utilizatorului. Chiar dacă ștergeți aplicația, aceasta rămâne în lista de profiluri de utilizator.

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ă descrierea aplicației Xbox.

Cmdlet Pentru fiecare circulă prin fiecare obiect în AppXPackage prin trimiterea lor către cmdlet Add-AppxPackage. Conform obține ajutor Pentru Add-AppxPackage, există două comutatoare cu cheie:

  • Intrerupator -Inregistreaza-te folosit pentru a înregistra instalațiile existente ale pachetelor de aplicații, puteți seta parametri 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, vei vedea lista complexa ID-urile aplicației, fișiere 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 Windows Store.

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva