Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features

Histoarysk binne kommando-rigelprogramma's op Unix-systemen better ûntwikkele as op Windows, mar mei de komst fan in nije oplossing is de situaasje feroare.

Windows PowerShell lit systeembehearders de measte routinetaken automatisearje. Mei har help kinne jo ynstellings feroarje, tsjinsten stopje en begjinne, en ek ûnderhâld fan de measte ynstalleare applikaasjes útfiere. It soe ferkeard wêze om it blauwe finster as in oare kommando-tolk te sjen. Dizze oanpak wjerspegelet net de essinsje fan 'e fernijingen foarsteld troch Microsoft. Eins binne de mooglikheden fan Windows PowerShell folle breder: yn in koarte searje artikels sille wy besykje út te finen hoe't de Microsoft-oplossing ferskilt fan 'e ark wêrmei't wy mear fertroud binne.

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features

Main Features 

Fansels is Windows PowerShell foaral in kommando-shell mei in skripttaal, oarspronklik boud op it .NET Framework en letter op de .NET Core. Oars as skelpen dy't tekstgegevens akseptearje en werombringe, wurket Windows PowerShell mei .NET-klassen, dy't eigenskippen en metoaden hawwe. PowerShell lit jo mienskiplike kommando's útfiere en jout jo ek tagong ta COM-, WMI- en ADSI-objekten. It brûkt ferskate opslach, lykas it bestânsysteem of de Windows-registraasje, foar tagong dêr't de saneamde. leveransiers. It is de muoite wurdich op te merken dat de mooglikheid om útfierbere komponinten fan PowerShell yn oare applikaasjes yn te nimmen om ferskate operaasjes út te fieren, ynkl. fia grafyske ynterface. It omkearde is ek wier: in protte Windows-applikaasjes jouwe tagong ta har behear-ynterfaces fia PowerShell. 

Windows PowerShell lit jo:

  • Feroarje bestjoeringssysteem ynstellings;
  • Beheare tsjinsten en prosessen;
  • Konfigurearje tsjinnerrollen en komponinten;
  • Ynstallearje software;
  • Behear ynstalleare software fia spesjale ynterfaces;
  • Ynbêde útfierbere komponinten yn programma's fan tredden;
  • Meitsje skripts om administraasjetaken te automatisearjen;
  • Wurkje mei it bestânsysteem, Windows-register, sertifikaatwinkel, ensfh.

Shell en ûntwikkeling omjouwing

Windows PowerShell bestiet yn twa foarmen: neist de konsole-emulator mei in kommando-shell is d'r in yntegreare skriptomjouwing (ISE). Om tagong te krijen ta de kommandorigelynterface, selektearje gewoan de passende fluchtoets út it Windows-menu of run powershell.exe út it Run-menu. In blau finster sil ferskine op it skerm, merkber oars yn mooglikheden fan de antediluvian cmd.exe. D'r is autofoltôging en oare funksjes bekend foar brûkers fan kommando-shells foar Unix-systemen.

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features

Om mei de shell te wurkjen moatte jo wat fluchtoetsen ûnthâlde:

  • De pylken omheech en omleech rôlje troch de skiednis om earder typte kommando's te werheljen;
  • De rjochter pylk oan 'e ein fan' e rigel typearret it foarige kommando karakter foar karakter;
  • Ctrl+Thús wisket de typte tekst fan de rinnerkeposysje nei it begjin fan de rigel;
  • Ctrl+End wisket tekst fan it rinnerke nei it ein fan de rigel.

F7 lit in finster sjen mei de ynfierde kommando's en kinne jo ien fan har selektearje. De konsole wurket ek troch tekst te selektearjen mei de mûs, kopiearje-plakken, rinnerkeposysje, wiskje, backspace - alles wat wy leaf ha.

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features
Windows PowerShell ISE is in folweardige ûntwikkelingsomjouwing mei in koade-bewurker dy't ljepblêden en syntaksismarkearring stipet, in kommando-ûntwerper, in ynboude debugger en oare programmearrings. As jo ​​in koppelteken skriuwe nei de kommandonamme yn 'e bewurker fan' e ûntwikkelingsomjouwing, krije jo alle beskikbere parameters yn 'e dellûklist, mei oanjout fan it type. Jo kinne PowerShell ISE starte fia in fluchtoets fan it systeemmenu of mei it útfierbere bestân powershell_ise.exe.

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features

Cmdlets 

Yn Windows PowerShell, de saneamde. cmdlets. Dit binne spesjalisearre .NET-klassen dy't in ferskaat oan funksjonaliteit leverje. Se wurde neamd neffens it "Aksje-Object" prinsipe (of "Verb-Noun, as jo leaver), en it ferbiningsteken skieden liket op it predikaat en ûnderwerp yn natuerlike taalsinnen. Get-Help betsjut bygelyks letterlik "Get-Help" of yn in PowerShell-kontekst: "Show-Help". Yn feite is dit in analoog fan it man-kommando yn Unix-systemen, en hantliedingen yn PowerShell moatte op dizze manier oanfrege wurde, en net troch cmdlets op te roppen mei de –help of /?-kaai.. Ferjit net de online dokumintaasje foar PowerShell: Microsoft hat it frij detaillearre.

Neist Get, brûke cmdlets ek oare tiidwurden om aksjes oan te jaan (en net allinich tiidwurden, strikt sprutsen). Yn 'e list hjirûnder jouwe wy wat foarbylden:

Add - tafoegje;
Clear - skjin;
Enable - oandwaan;
Disable - útsette;
New - oanmeitsje;
Remove - wiskje;
Set - freegje;
Start - rinne;
Stop - stopje;
Export - eksportearje;
Import - ymportearje.

D'r binne systeem-, brûkers- en opsjonele cmdlets: as gefolch fan útfiering jouwe se allegear in objekt as in array fan objekten werom. Se binne net haadlettergefoelich, d.w.s. Fanút it eachpunt fan 'e kommando-tolk is d'r gjin ferskil tusken Get-Help en get-help. It symboal ';' wurdt brûkt foar skieding, mar it is allinich ferplicht as ferskate cmdlets op ien rigel útfierd wurde. 

Windows PowerShell-cmdlets wurde groepearre yn modules (NetTCPIP, Hyper-V, ensfh.), En d'r is in Get-Command-cmdlet foar sykjen op objekt en aksje. Jo kinne help sjen litte op it sa:

Get-Help Get-Command

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features

Standert toant it kommando flugge help, mar parameters (arguminten) wurde trochjûn oan cmdlets as nedich. Mei har help kinne jo bygelyks detaillearre (-Detailed parameter) of folsleine (-Full) help krije, en ek foarbylden werjaan (-Examples parameter):

Get-Help Get-Command -Examples

Help yn Windows PowerShell wurdt bywurke mei de Update-Help cmdlet. As in rigel mei kommando's te lang blykt te wêzen, kinne de cmdlet-arguminten nei de folgjende oerbrocht wurde troch it tsjinstkarakter '`' te skriuwen en op Enter te drukken - gewoan it skriuwen fan in kommando op ien rigel en trochgean op in oare sil net wurkje.

Hjirûnder binne wat foarbylden fan mienskiplike cmdlets: 

Get-Process - prosessen sjen litte dy't rinne yn it systeem;
Get-Service - tsjinsten en har status sjen litte;
Get-Content - werjaan de ynhâld fan it bestân.

Foar faak brûkte cmdlets en eksterne nutsbedriuwen hat Windows PowerShell koarte synonimen - aliasen. Bygelyks, dir is in alias foar Get-ChildItem. D'r binne ek analogen fan kommando's fan Unix-systemen yn 'e list fan synonimen (ls, ps, ensfh.), En de Get-Help cmdlet wurdt neamd troch it helpkommando. De folsleine list mei synonimen kin wurde besjoen mei de Get-Alias ​​​​cmdlet:

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features

PowerShell-skripts, funksjes, modules en taal

Windows PowerShell-skripts wurde opslein as platte tekstbestannen mei in .ps1-útwreiding. Jo kinne se net útfiere troch te dûbelklikken: jo moatte rjochts klikke om it kontekstmenu te iepenjen en "Run in PowerShell" te selektearjen. Fanút de konsole moatte jo it folsleine paad nei it skript opjaan, of nei de passende map gean en de triemnamme skriuwe. It útfieren fan skripts wurdt ek beheind troch systeembelied, en om de aktuele ynstellingen te kontrolearjen kinne jo de Get-ExecutionPolicy cmdlet brûke, dy't ien fan 'e folgjende wearden werombringt:

Restricted - rinnende skripts is ferbean (standert);
AllSigned - allinich skripts tekene troch in fertroude ûntwikkelder meie rinne;
RemoteSigned - Tastien ûndertekene en eigen skripts útfiere;
Unrestricted - Tastimming om alle skripts út te fieren.

De behearder hat twa opsjes. De feilichste omfettet ûndertekening fan skripts, mar dit is nochal in serieuze tsjoenerij - wy sille it yn 'e folgjende artikels behannelje. Litte wy no it paad fan it minste ferset nimme en it belied feroarje:

Set-ExecutionPolicy RemoteSigned

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features
Om dit te dwaan moatte jo PowerShell as behearder útfiere, hoewol jo in spesjale parameter brûke kinne om it belied foar de aktuele brûker te feroarjen.

Skripten wurde skreaun yn in objekt-rjochte programmeartaal, wêrfan de kommando's wurde neamd neffens itselde prinsipe as de earder besprutsen cmdlets: "Action-Object" ("Verb-Noun"). It haaddoel is om administraasjetaken te automatisearjen, mar it is in folweardige ynterpretearre taal dy't alle nedige konstruksjes hat: betingstsprong, loops, fariabelen, arrays, objekten, flaterhanneling, ensfh. Elke tekstbewurker is geskikt foar it skriuwen fan skripts, mar it is it meast handich om Windows PowerShell ISE út te fieren.

Jo kinne parameters oan it skript trochjaan, se ferplicht meitsje, en ek standertwearden ynstelle. Windows PowerShell lit jo ek funksjes oanmeitsje en oproppe op deselde manier as cmdlets, mei de Funksje-konstruksje en krullende beugels. In skript mei funksjes hjit in module en hat in .psm1 tafoeging. Modules moatte wurde opslein yn mappen definieare yn PowerShell-omjouwingsfariabelen. Jo kinne se besjen mei it folgjende kommando:

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

Conveyors

Yn it lêste foarbyld hawwe wy in ûntwerp brûkt dat bekend is foar brûkers fan Unix-shells. Yn Windows PowerShell lit de fertikale balke jo ek de útfier fan ien kommando trochjaan oan de ynfier fan in oar, mar d'r is in signifikant ferskil yn 'e ymplemintaasje fan' e pipeline: wy hawwe it net mear oer in set karakters of wat tekst. Ynboude cmdlets of brûker-definieare funksjes jouwe objekten of arrays fan objekten werom, en kinne se ek ûntfange as ynfier. Lykas de Bourne-shell en syn protte opfolgers, brûkt PowerShell in pipeline om komplekse taken te ferienfâldigjen.

It ienfâldichste foarbyld fan in pipeline sjocht der sa út:

Get-Service | Sort-Object -property Status

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features
De Get-Service-cmdlet wurdt earst útfierd, en dan wurde alle tsjinsten dy't it ûntfangt trochjûn oan de Sort-Object-cmdlet foar sortearring troch de Status-eigenskip. Oan hokker argumint it resultaat fan 'e foarige seksje fan' e pipeline wurdt trochjûn hinget ôf fan it type - normaal is it InputObject. Dit probleem sil yn mear detail besprutsen wurde yn in artikel wijd oan de PowerShell-programmearringstaal. 

As jo ​​​​wolle, kinne jo de ketting trochgean en it resultaat fan Sort-Object trochjaan oan in oare cmdlet (se wurde fan links nei rjochts útfierd). Trouwens, Windows-brûkers hawwe ek tagong ta it ûntwerp dat bekend is foar alle Unixoids foar side-by-side output: 

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

Taken útfiere op 'e eftergrûn 

Hiel faak is it nedich om in bepaald kommando op 'e eftergrûn út te fieren om net te wachtsjen op it resultaat fan syn útfiering yn' e shell-sesje. Windows PowerShell hat ferskate cmdlets foar dizze situaasje:

Start-Job - start in eftergrûntaak;
Stop-Job - it stopjen fan in eftergrûntaak;
Get-Job - besjen fan de list mei eftergrûntaken;
Receive-Job - it besjen fan it resultaat fan in eftergrûntaak;
Remove-Job - in eftergrûntaak wiskje;
Wait-Job - it oerdragen fan de eftergrûntaak werom nei de konsole.

Om in eftergrûntaak te begjinnen, brûke wy de Start-Job cmdlet en spesifisearje in kommando as set fan kommando's yn krullende beugels:

Start-Job {Get-Service}

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features
Eftergrûntaken yn Windows PowerShell kinne wurde manipulearre troch har nammen te kennen. Litte wy earst leare hoe't jo se werjaan:

Get-Job

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features
Litte wy no it resultaat fan Job1 sjen litte:

Receive-Job Job1 | more

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features
It is frij simpel.

Utfiering fan kommando op ôfstân

Windows PowerShell lit jo kommando's en skripts net allinich lokaal útfiere, mar ek op in kompjûter op ôfstân en sels op in heule groep masines. D'r binne ferskate manieren om dit te dwaan:

  • In protte cmdlets hawwe in parameter -ComputerName, mar op dizze manier sil it net mooglik wêze om bygelyks in transportband te meitsjen;
  • Cmdlet Enter-PSSession kinne jo meitsje in ynteraktive sesje op in ôfstân masine; 
  • Mei help fan in cmdlet Invoke-Command Jo kinne kommando's of skripts útfiere op ien of mear kompjûters op ôfstân.

PowerShell ferzjes

Sûnt syn earste release yn 2006 is PowerShell in protte feroare. It ark is beskikber foar in protte systemen dy't rinne op ferskate hardware platfoarms (x86, x86-64, Itanium, ARM): 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. De lêste release 6.2 waard útbrocht op 10 jannewaris 2018. Skripten dy't skreaun binne foar eardere ferzjes binne heul wierskynlik yn lettere ferzjes te wurkjen, mar problemen kinne ûntstean mei in omkearde oerdracht, om't yn 'e jierren fan ûntwikkeling in grut oantal nije cmdlets binne ferskynd yn PowerShell. Jo kinne de ferzje fine fan 'e kommando-shell ynstalleare op jo kompjûter mei de PSVersion-eigenskip fan 'e $PSVersionTable ynboude fariabele:

$PSVersionTable.PSVersion

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features
Jo kinne ek de cmdlet brûke:

Get-Variable -Name PSVersionTable –ValueOnly

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features
Itselde kin dien wurde mei de Get-Host cmdlet. Eins binne d'r in protte opsjes, mar om se te brûken moatte jo de programmeertaal PowerShell leare, wat wy sille dwaan yn folgjende artikel

Resultaten 

Microsoft is it slagge om in wirklik krêftige kommando-shell te meitsjen mei in handige yntegreare omjouwing foar it ûntwikkeljen fan skripts. Wat it ûnderskiedt fan 'e ark wêrmei't wy yn' e Unix-wrâld bekend binne, is har djippe yntegraasje mei bestjoeringssystemen fan 'e Windows-famylje, lykas ek mei software foar har en it .NET Core-platfoarm. PowerShell kin in objekt-oriïntearre shell neamd wurde, om't cmdlets en brûker-definieare funksjes objekten as arrays fan objekten werombringe en se kinne ûntfange as ynfier. Wy tinke dat alle Windows-tsjinnerbehearders dit ark moatte hawwe: de tiid is foarby dat se sûnder de kommandorigel koene. In avansearre konsole shell is benammen nedich op ús goedkeape VPS mei Windows Server Core, mar dat is in folslein oar ferhaal.

Wat is Windows PowerShell en wêrmei wurdt it iten? Diel 1: Key Features

Allinnich registrearre brûkers kinne meidwaan oan 'e enkête. Ynlogge, asjebleaft.

Hokker ûnderwerpen moatte earst oanpakt wurde yn 'e folgjende artikels yn' e searje?

  • 53,2%Programmearje yn PowerShell123

  • 42,4%PowerShell98 Funksjes en modules

  • 22,1%Hoe kinne jo jo eigen skripts ûndertekenje?51

  • 12,1%Wurkje mei opslach fia providers28

  • 57,6%Automatisearje kompjûteradministraasje mei PowerShell133

  • 30,7%Software beheare en PowerShell útfierbere ynbêde yn produkten fan tredden71

231 brûkers stimden. 37 brûkers ûntholden har.

Boarne: www.habr.com

Add a comment