Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke

Histories is opdragreëlhulpmiddels op Unix-stelsels beter ontwikkel as op Windows, maar met die koms van 'n nuwe oplossing het die situasie verander.

Windows PowerShell laat stelseladministrateurs toe om die meeste roetinetake te outomatiseer. Met sy hulp kan u instellings verander, dienste stop en begin, en ook instandhouding van die meeste geïnstalleerde toepassings uitvoer. Dit sal verkeerd wees om die blou venster as 'n ander opdrag-tolk te beskou. Hierdie benadering weerspieël nie die kern van die innovasies wat deur Microsoft voorgestel word nie. Trouens, die vermoëns van Windows PowerShell is baie wyer: in 'n kort reeks artikels sal ons probeer uitvind hoe die Microsoft-oplossing verskil van die nutsgoed waarmee ons meer vertroud is.

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke

Belangrike kenmerke 

Natuurlik is Windows PowerShell hoofsaaklik 'n script-dop, oorspronklik gebou op die .NET Framework en later op .NET Core. Anders as skulpe wat teksdata aanvaar en terugstuur, werk Windows PowerShell met .NET-klasse wat eienskappe en metodes het. PowerShell laat jou toe om algemene opdragte uit te voer en gee jou ook toegang tot COM-, WMI- en ADSI-voorwerpe. Dit gebruik verskeie bergings, soos die lêerstelsel of die Windows-register, vir toegang tot wat sg. verskaffers. Dit is die moeite werd om kennis te neem van die moontlikheid om PowerShell-uitvoerbare komponente in ander toepassings in te sluit om verskeie bewerkings te implementeer, insluitend. deur 'n grafiese koppelvlak. Die omgekeerde is ook waar: baie Windows-toepassings bied toegang tot hul bestuurskoppelvlakke deur PowerShell. 

Windows PowerShell laat jou toe om:

  • Verander bedryfstelsel instellings;
  • Bestuur dienste en prosesse;
  • Stel bedienerrolle en komponente op;
  • Installeer sagteware;
  • Bestuur geïnstalleerde sagteware deur spesiale koppelvlakke;
  • Sluit uitvoerbare komponente in derdeparty-programme in;
  • Skep skrifte om administrasietake te outomatiseer;
  • Werk met die lêerstelsel, Windows-register, sertifikaatwinkel, ens.

Shell en ontwikkelingsomgewing

Daar is Windows PowerShell in twee vorme: benewens die konsole-emulator met 'n opdragdop, is daar 'n geïntegreerde skrifomgewing (ISE). Om toegang tot die opdraglyn-koppelvlak te kry, kies eenvoudig die toepaslike kortpad in die Windows-kieslys of hardloop powershell.exe uit die Run-kieslys. 'n Blou venster sal op die skerm verskyn, wat merkbaar verskil in vermoëns van die antediluvian cmd.exe. Daar is outovoltooiing en ander kenmerke wat bekend is aan gebruikers van opdragdoppe vir Unix-stelsels.

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke

Om met die dop te werk, moet jy 'n paar sleutelbordkortpaaie onthou:

  • Die op- en afpyltjies blaai deur die geskiedenis om voorheen getikte opdragte te herhaal;
  • Die regspyltjie aan die einde van die reël tik die vorige opdrag karakter vir karakter oor;
  • Ctrl+Home verwyder die getikte teks vanaf die wyserposisie tot aan die begin van die reël;
  • Ctrl+End vee teks van die wyser na die einde van die reël uit.

F7 wys 'n venster met getikte opdragte en laat jou toe om een ​​van hulle te kies. Die konsole werk ook met tekskeuse met die muis, kopieer-plak, wyserposisionering, uitvee, terugspasie – alles waarvan ons hou.

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke
Windows PowerShell ISE is 'n volledige ontwikkelingsomgewing met 'n oortjies en sintaksis-gemerkte koderedigeerder, opdragbouer, ingeboude ontfouter en ander programmeergenot. As jy 'n koppelteken na die opdragnaam in die ontwikkelingsomgewingsredigeerder skryf, sal jy alle beskikbare opsies in die aftreklys kry met 'n aanduiding van die tipe. U kan PowerShell ISE óf deur 'n kortpad vanaf die stelselkieslys begin, óf die uitvoerbare lêer powershell_ise.exe gebruik.

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke

Cmdlets 

In Windows PowerShell word die sg. cmdlets. Dit is gespesialiseerde .NET-klasse wat 'n verskeidenheid funksionaliteit verskaf. Hulle word benoem volgens die "Aksie-Object"-beginsel (of "Werkwoord-Selfstandige naamwoord, as jy verkies), en die koppelteken-geskeide bindmiddel lyk soos die predikaat en onderwerp in natuurlike taalsinne. Byvoorbeeld, Kry-Hulp beteken letterlik "Kry-Hulp" of in 'n PowerShell-konteks: "Wys-Hulp". Trouens, dit is 'n analoog van die man-opdrag in Unix-stelsels, en handleidings in PowerShell moet op hierdie manier aangevra word, en nie deur cmdlets te roep met die –help of /? sleutel nie.. Moenie vergeet van die aanlyn dokumentasie vir PowerShell: Microsoft het dit redelik gedetailleerd.

Benewens Get, gebruik cmdlets ander werkwoorde om aksies aan te dui (en nie net werkwoorde nie, streng gesproke). In die lys hieronder gee ons 'n paar voorbeelde:

Add - voeg by;
Clear - duidelik;
Enable - sit aan;
Disable - skakel af;
New - skep;
Remove - verwyder;
Set - vra;
Start - hardloop;
Stop - stop;
Export - uitvoer;
Import - invoer.

Daar is stelsel-, gebruikers- en opsionele cmdlets: as gevolg van uitvoering gee hulle almal 'n voorwerp of 'n reeks voorwerpe terug. Hulle is nie hooflettersensitief nie, m.a.w. vanuit die opdragtolk se oogpunt is daar geen verskil tussen Kry-Hulp en kry-hulp nie. Die karakter ';' word vir skeiding gebruik, maar dit is verpligtend om dit slegs te plaas as verskeie cmdlets op dieselfde reël uitgevoer word. 

Windows PowerShell-cmdlets word in modules gegroepeer (NetTCPIP, Hyper-V, ens.), En daar is 'n Get-Command-cmdlet om volgens voorwerp en aksie te soek. Jy kan hulp daarvoor wys soos volg:

Get-Help Get-Command

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke

By verstek vertoon die opdrag kort hulp, maar parameters (argumente) word na cmdlets oorgedra soos nodig. Met hul hulp kan jy byvoorbeeld gedetailleerde (parameter -Detailed) of volledige (parameter -Full) hulp kry, asook voorbeelde (parameter -Voorbeelde) vertoon:

Get-Help Get-Command -Examples

Hulp in Windows PowerShell word opgedateer deur die Update-Help cmdlet. As 'n reël opdragte te lank blyk te wees, kan die cmdlet-argumente na die volgende een oorgedra word deur die dienskarakter '`' te skryf en Enter te druk - om eenvoudig 'n opdrag op een reël klaar te skryf en op 'n ander voort te gaan, sal nie werk nie.

Hier is 'n paar voorbeelde van algemene cmdlets: 

Get-Process - wys lopende prosesse in die stelsel;
Get-Service — wys dienste en hul status;
Get-Content - vertoon die inhoud van die lêer.

Vir gereeld gebruikte cmdlets en eksterne nutsprogramme, het Windows PowerShell kort sinonieme - aliasse (van die Engelse Alias). Byvoorbeeld, dir is 'n alias vir Get-ChildItem. Die lys sinonieme bevat ook analoë van opdragte van Unix-stelsels (ls, ps, ens.), en die Get-Help-cmdlet word deur die hulpopdrag geroep. 'n Volledige lys sinonieme kan bekyk word met die Get-Alias ​​​​cmdlet:

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke

Skripte, funksies, modules en die PowerShell-taal

Windows PowerShell-skrifte word as gewone tekslêers met 'n .ps1-uitbreiding gestoor. Jy kan dit nie laat loop deur te dubbelklik nie: jy moet regskliek om die konteks kieslys oop te maak en kies "Hardloop in PowerShell". Vanaf die konsole moet jy óf die volledige pad na die skrif spesifiseer, óf na die toepaslike gids gaan en die lêernaam skryf. Die uitvoer van skrifte word ook beperk deur stelselbeleid, en om die huidige instellings na te gaan, kan jy die Get-ExecutionPolicy cmdlet gebruik, wat een van die volgende waardes sal terugstuur:

Restricted - lopende skrifte is verbode (by verstek);
AllSigned - slegs skrifte wat deur 'n betroubare ontwikkelaar onderteken is, word toegelaat om te loop;
RemoteSigned - toegelaat om getekende en eie skrifte uit te voer;
Unrestricted - toegelaat om enige skrifte uit te voer.

Die administrateur het twee opsies. Die veiligste behels die ondertekening van skrifte, maar dit is nogal 'n ernstige towery - ons sal dit in toekomstige artikels hanteer. Kom ons neem nou die pad van die minste weerstand en verander die beleid:

Set-ExecutionPolicy RemoteSigned

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke
PowerShell sal as 'n administrateur uitgevoer moet word om dit te doen, alhoewel jy die beleid vir die huidige gebruiker kan verander met 'n spesiale instelling.

Skripte word in 'n objekgeoriënteerde programmeertaal geskryf, waarvan die opdragte volgens dieselfde beginsel as die voorheen bespreekte cmdlets benoem word: "Aksie-Object" ("Verb-Selfstandige naamwoord"). Die hoofdoel daarvan is om administratiewe take te outomatiseer, maar dit is 'n volwaardige geïnterpreteerde taal wat al die nodige konstrukte het: voorwaardelike sprong, lusse, veranderlikes, skikkings, voorwerpe, fouthantering, ens. Enige teksredigeerder is goed vir scripting, maar dit is die beste om Windows PowerShell ISE te laat loop.

U kan parameters na die skrif deurgee, dit vereis maak en verstekwaardes stel. Boonop laat Windows PowerShell jou toe om funksies op dieselfde manier as cmdlets te skep en op te roep, deur die Funksie-konstruksie en krulhakies te gebruik. 'n Skrip met funksies word 'n module genoem en het 'n .psm1-uitbreiding. Modules moet gestoor word in dopgehou wat in die PowerShell-omgewingsveranderlikes gedefinieer is. Jy kan hulle sien met die volgende opdrag:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Conveyors

In die laaste voorbeeld het ons 'n konstruk gebruik wat aan Unix-dopgebruikers bekend is. In Windows PowerShell laat die vertikale balk jou ook toe om die uitvoer van een opdrag na die invoer van 'n ander deur te gee, maar daar is 'n beduidende verskil in die implementering van die pyplyn: ons praat nie meer van 'n stel karakters of 'n soort van teks. Ingeboude cmdlets of gebruikergedefinieerde funksies gee voorwerpe of skikkings van voorwerpe terug, en kan dit ook as invoer ontvang. Soos die Bourne-dop en sy vele opvolgers, maak PowerShell komplekse take makliker met 'n pyplyn.

Die eenvoudigste pyplynvoorbeeld lyk soos volg:

Get-Service | Sort-Object -property Status

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke
Eerstens word die Get-Service-cmdlet uitgevoer, en dan word al die dienste wat daardeur ontvang word, na die Sort-Object-cmdlet oorgedra vir sortering volgens die Status-eienskap. Na watter argument die resultaat van die vorige afdeling van die pyplyn oorgedra word, hang af van die tipe daarvan - gewoonlik is dit InputObject. Hierdie kwessie sal in meer besonderhede bespreek word in 'n artikel gewy aan die PowerShell-programmeertaal. 

As jy wil, kan jy voortgaan met die ketting en die resultaat van Sort-Object aan 'n ander cmdlet oordra (hulle sal van links na regs uitgevoer word). Terloops, Windows-gebruikers het ook toegang tot die ontwerp wat aan alle Unixoids bekend is vir bladsy-vir-bladsy-uitvoer: 

Get-Service | Sort-Object -property Status | more

Uitvoer van take in die agtergrond 

Dikwels is dit nodig om 'n sekere opdrag op die agtergrond uit te voer, om nie te wag vir die resultaat van die uitvoering daarvan in die dopsessie nie. Windows PowerShell het verskeie cmdlets vir hierdie geval:

Start-Job — begin 'n agtergrondtaak;
Stop-Job — stop 'n agtergrondtaak;
Get-Job - sien die lys agtergrondtake;
Receive-Job - kyk na die resultaat van die uitvoering van die agtergrondtaak;
Remove-Job — verwydering van 'n agtergrondtaak;
Wait-Job - die oordrag van die agtergrondtaak terug na die konsole.

Om 'n agtergrondtaak te begin, gebruik ons ​​die Start-Job cmdlet en spesifiseer 'n opdrag of stel opdragte in krullerige hakies:

Start-Job {Get-Service}

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke
Agtergrondtake in Windows PowerShell kan gemanipuleer word deur hul name te ken. Kom ons leer eers hoe om dit te vertoon:

Get-Job

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke
Kom ons wys nou die resultaat van die taak Job1:

Receive-Job Job1 | more

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke
Dit is redelik eenvoudig.

Uitvoering van afstandbevele

Windows PowerShell laat jou toe om opdragte en skrifte uit te voer nie net op die plaaslike rekenaar nie, maar ook op 'n afgeleë rekenaar, en selfs op 'n hele groep masjiene. Daar is verskeie maniere om dit te doen:

  • Baie cmdlets het 'n parameter -ComputerName, maar op hierdie manier sal dit nie moontlik wees om byvoorbeeld 'n vervoerband te skep nie;
  • Cmdlet Enter-PSSession laat jou toe om 'n interaktiewe sessie op 'n afgeleë masjien te skep; 
  • Gebruik die cmdlet Invoke-Command Jy kan opdragte of skrifte op een of meer afgeleë rekenaars uitvoer.

Weergawes van PowerShell

PowerShell het baie verander sedert sy eerste vrystelling in 2006. Die instrument is beskikbaar vir baie stelsels wat op verskillende hardeware-platforms (x86, x86-64, Itanium, ARM) loop: Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux en OS X. Jongste vrystelling 6.2 vrygestel op 10 Januarie 2018. Skripte wat vir vroeëre weergawes geskryf is, sal waarskynlik in latere weergawes werk, maar terugportering kan problematies wees omdat PowerShell 'n groot aantal nuwe cmdlets oor die jare van ontwikkeling bekendgestel het. U kan die weergawe van die opdragdop wat op die rekenaar geïnstalleer is, uitvind deur die PSVersion-eienskap van die $PSVersionTable ingeboude veranderlike te gebruik:

$PSVersionTable.PSVersion

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke
Jy kan ook die cmdlet gebruik:

Get-Variable -Name PSVersionTable –ValueOnly

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke
Dieselfde word gedoen met die Get-Host cmdlet. Trouens, daar is baie opsies, maar om dit te gebruik moet jy die PowerShell-programmeertaal leer, wat ons sal doen in volgende artikel

Resultate van 

Microsoft het daarin geslaag om 'n baie kragtige dop te skep met 'n gerieflike geïntegreerde omgewing vir die ontwikkeling van skrifte. Dit verskil van die gereedskap wat aan ons bekend is in die wêreld van Unix deur diep integrasie met bedryfstelsels van die Windows-familie, sowel as met sagteware daarvoor en die .NET Core-platform. PowerShell kan 'n objekgeoriënteerde dop genoem word omdat cmdlets en gebruikergedefinieerde funksies voorwerpe of skikkings van voorwerpe terugstuur en dit as invoer kan neem. Ons dink dat alle bedieneradministrateurs op Windows hierdie instrument moet besit: die tyd het verbygegaan toe hulle sonder die opdragreël kon klaarkom. 'N Gevorderde konsole dop is veral nodig op ons laekoste-VPS met Windows Server Core, maar dit is 'n heeltemal ander storie.

Wat is Windows PowerShell en waarmee word dit geëet? Deel 1: Sleutelkenmerke

Slegs geregistreerde gebruikers kan aan die opname deelneem. Meld aan, asseblief.

Watter onderwerpe moet eerste in die volgende artikels in die reeks aangespreek word?

  • 53,2%Programmering in PowerShell123

  • 42,4%PowerShell98 Funksies en Modules

  • 22,1%Hoe om jou eie skrifte te teken?51

  • 12,1%Werk met bergings deur verskaffers28

  • 57,6%Outomatisering van rekenaaradministrasie met PowerShell133

  • 30,7%Bestuur sagteware en inbedding van PowerShell-uitvoerbare programme in derdeparty-produkte71

231 gebruikers het gestem. 37 gebruikers het buite stemming gebly.

Bron: will.com

Voeg 'n opmerking