X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin

Storikament, l-utilitajiet tal-linja tal-kmand fuq sistemi Unix huma żviluppati aħjar milli fuq Windows, iżda bil-miġja ta 'soluzzjoni ġdida, is-sitwazzjoni inbidlet.

Windows PowerShell jippermetti lill-amministraturi tas-sistema awtomatizzati l-biċċa l-kbira tal-kompiti ta’ rutina. Biha, tista 'tbiddel is-settings, twaqqaf u tibda s-servizzi, u wkoll twettaq manutenzjoni fuq il-biċċa l-kbira tal-applikazzjonijiet installati. Ikun żbaljat li t-tieqa blu tiġi pperċepita bħala interpretu ieħor tal-kmand. Dan l-approċċ ma jirriflettix l-essenza tal-innovazzjonijiet proposti minn Microsoft. Fil-fatt, il-possibbiltajiet tal-Windows PowerShell huma ħafna usa ': f'serje qasira ta' artikoli, se nippruvaw insemmu kif is-soluzzjoni ta 'Microsoft hija differenti mill-għodod li aħna aktar familjari magħhom.

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin

Karatteristiċi ewlenin 

Naturalment, il-Windows PowerShell huwa primarjament shell scripting, oriġinarjament mibnija fuq il-.NET Framework u aktar tard fuq .NET Core. B'differenza mill-qxur li jaċċettaw u jirritornaw dejta tat-test, Windows PowerShell jaħdem bi klassijiet .NET li għandhom proprjetajiet u metodi. PowerShell jippermettilek tmexxi kmandi komuni u tagħtik ukoll aċċess għal oġġetti COM, WMI u ADSI. Juża diversi ħażniet, bħall-fajl sistema jew ir-reġistru tal-Windows, għall-aċċess għalihom hekk imsejħa. fornituri. Ta 'min jinnota l-possibbiltà li jiġu inkorporati komponenti eżekutibbli PowerShell f'applikazzjonijiet oħra biex jiġu implimentati diversi operazzjonijiet, inkl. permezz ta’ interface grafiku. Il-maqlub huwa minnu wkoll: ħafna applikazzjonijiet tal-Windows jipprovdu aċċess għall-interfaces ta 'ġestjoni tagħhom permezz ta' PowerShell. 

Windows PowerShell jippermettilek li:

  • Ibdel is-settings tas-sistema operattiva;
  • Ġestjoni ta' servizzi u proċessi;
  • Ikkonfigura r-rwoli u l-komponenti tas-server;
  • Installazzjoni ta' softwer;
  • Immaniġġja softwer installat permezz ta' interfaces speċjali;
  • Inkorpora komponenti eżekutibbli fi programmi ta' partijiet terzi;
  • Oħloq skripts biex jiġu awtomatizzati l-kompiti tal-amministrazzjoni;
  • Aħdem mas-sistema tal-fajls, ir-reġistru tal-Windows, il-maħżen taċ-ċertifikati, eċċ.

Qoxra u ambjent ta 'żvilupp

Hemm Windows PowerShell f'żewġ forom: minbarra l-emulatur tal-console b'qoxra tal-kmand, hemm Integrated Scripting Environment (ISE). Biex taċċessa l-interface tal-linja tal-kmand, sempliċement agħżel is-shortcut xierqa mill-menu tal-Windows jew mexxi powershell.exe mill-menu Mexxi. Tieqa blu se tidher fuq l-iskrin, notevolment differenti fil-kapaċitajiet mis-cmd.exe antediluvjan. Hemm awtokompletazzjoni u karatteristiċi oħra familjari għall-utenti tal-qxur tal-kmand għal sistemi Unix.

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin

Biex taħdem bil-qoxra, trid tiftakar xi shortcuts tat-tastiera:

  • Il-vleġeġ 'il fuq u 'l isfel jiskrolljaw l-istorja biex jirrepetu kmandi ttajpjati qabel;
  • Il-vleġġa tal-lemin fl-aħħar ta' linja terġa' tikteb il-kmand preċedenti karattru b'karattru;
  • Ctrl+Home tħassar it-test ittajpjat mill-pożizzjoni tal-cursor sal-bidu tal-linja;
  • Ctrl+Tmiem iħassar it-test mill-cursor sa l-aħħar tal-linja.

F7 juri tieqa bi kmandi ittajpjati u jippermettilek tagħżel waħda minnhom. Il-console jaħdem ukoll bl-għażla tat-test bil-maws, kopja-pejst, pożizzjonament tal-cursor, tħassir, backspace - dak kollu li nħobbu.

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin
Windows PowerShell ISE huwa ambjent ta 'żvilupp komplut b'editur ta' kodiċi b'tabbed u enfasizzat bis-sintassi, bennej tal-kmand, debugger integrat, u pjaċiri oħra ta 'programmazzjoni. Jekk tikteb sing wara l-isem tal-kmand fl-editur tal-ambjent tal-iżvilupp, ikollok l-għażliet kollha disponibbli fil-lista drop-down b'indikazzjoni tat-tip. Tista' tniedi PowerShell ISE jew permezz ta' shortcut mill-menu tas-sistema, jew billi tuża l-fajl eżekutibbli powershell_ise.exe.

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin

Cmdlets 

Fil-Windows PowerShell, l-hekk imsejħa. cmdlets. Dawn huma klassijiet .NET speċjalizzati li jipprovdu varjetà ta' funzjonalità. Huma jissejħu Azzjoni-Oġġett (jew Verb-Nom, jekk tippreferi), u r-rabta separata b'sing tixbah lill-predikat u s-suġġett f'sentenzi tal-lingwa naturali. Pereżempju, Get-Help litteralment tfisser "Get-Help", jew f'kuntest PowerShell: "Show-Help". Fil-fatt, dan huwa analogu tal-kmand man fis-sistemi Unix, u l-manwali f'PowerShell għandhom jintalbu b'dan il-mod, u mhux billi ssejjaħ cmdlets bit-tasti --help jew /?. Tinsiex dwar id-dokumentazzjoni online tal-PowerShell: Microsoft għandha pjuttost dettaljata.

Minbarra Get, cmdlets jużaw verbi oħra biex jindikaw azzjonijiet (u mhux verbi biss, strettament). Fil-lista hawn taħt nagħtu xi eżempji:

Add - żid;
Clear - ċara;
Enable - Ixgħel;
Disable - itfi;
New - toħloq;
Remove - ħassar;
Set - jistaqsi;
Start - run;
Stop - waqfa;
Export - esportazzjoni;
Import - importa.

Hemm cmdlets tas-sistema, tal-utent u fakultattivi: bħala riżultat tal-eżekuzzjoni, kollha jirritornaw oġġett jew firxa ta 'oġġetti. Mhumiex sensittivi għall-każi, i.e. mill-perspettiva tal-interpretu tal-kmand, m'hemm l-ebda differenza bejn Get-Help u get-help. Il-karattru ';' jintuża għas-separazzjoni, iżda huwa obbligatorju li titqiegħed biss jekk jiġu esegwiti diversi cmdlets fuq l-istess linja. 

Cmdlets Windows PowerShell huma miġbura f'moduli (NetTCPIP, Hyper-V, eċċ.), U hemm cmdlet Get-Command biex tfittex b'oġġett u azzjoni. Tista' turi għajnuna għaliha bħal din:

Get-Help Get-Command

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin

B'mod awtomatiku, il-kmand juri għajnuna qasira, iżda l-parametri (argumenti) huma mgħoddija lil cmdlets kif meħtieġ. Bl-għajnuna tagħhom, tista ', pereżempju, tikseb għajnuna dettaljata (parametru -Dettaljat) jew sħiħa (parametru -Sħiħa), kif ukoll eżempji tal-wiri (parametru -Eżempji):

Get-Help Get-Command -Examples

L-għajnuna fil-Windows PowerShell hija aġġornata mill-cmdlet Update-Help. Jekk il-linja tal-kmand tirriżulta li hija twila wisq, l-argumenti tas-cmdlet jistgħu jiġu mċaqalqa għal dik li jmiss billi tikteb il-karattru tas-servizz ''' u tagħfas Enter - sempliċement tispiċċa tikteb il-kmand fuq linja waħda u tkompli fuq oħra ma taħdimx.

Hawn huma xi eżempji ta' cmdlets komuni: 

Get-Process - juru proċessi li qed jaħdmu fis-sistema;
Get-Service — is-servizzi tal-wiri u l-istatus tagħhom;
Get-Content - turi l-kontenut tal-fajl.

Għal cmdlets u utilitajiet esterni użati ta 'spiss, Windows PowerShell għandu sinonimi qosra - psewdonimi (mill-Ingliż. Alias). Per eżempju, dir huwa alias għal Get-ChildItem. Il-lista ta 'sinonimi tinkludi wkoll analogi ta' kmandi minn sistemi Unix (ls, ps, eċċ.), u l-cmdlet Get-Help jissejjaħ mill-kmand tal-għajnuna. Lista kompluta ta' sinonimi tista' tara bl-użu tas-cmdlet Get-Alias:

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin

Skripts, Funzjonijiet, Moduli, u l-Lingwa PowerShell

L-iskripts tal-Windows PowerShell huma maħżuna bħala fajls b'test sempliċi b'estensjoni .ps1. Ma tistax tniedihom billi tikklikkja darbtejn: trid tikklikkja bil-lemin biex issejjaħ il-menu tal-kuntest u tagħżel l-oġġett "Run in PowerShell". Mill-console, ikollok jew tispeċifika t-triq sħiħa għall-iskrittura, jew tmur fid-direttorju xieraq u tikteb l-isem tal-fajl. It-tħaddim ta' skripts huwa wkoll limitat mill-politika tas-sistema, u biex tiċċekkja s-settings attwali, tista' tuża l-cmdlet Get-ExecutionPolicy, li se tirritorna wieħed mill-valuri li ġejjin:

Restricted — it-tnedija ta' skripts hija diżattivata (b'mod awtomatiku);
AllSigned - it-tnedija ta' skripts iffirmati minn żviluppatur ta' fiduċja biss hija permessa;
RemoteSigned - jitħallew iħaddmu skripts iffirmati u proprji;
Unrestricted - jitħallew imexxu kwalunkwe skripts.

L-amministratur għandu żewġ għażliet. L-aktar sigur jinvolvi l-iffirmar ta 'skripts, iżda din hija sħaħar pjuttost serja - se nittrattawha f'artikoli futuri. Issa ejja nieħdu t-triq tal-inqas reżistenza u nibdlu l-politika:

Set-ExecutionPolicy RemoteSigned

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin
PowerShell se jeħtieġ li jitmexxa bħala amministratur biex tagħmel dan, għalkemm tista 'tbiddel il-politika għall-utent attwali b'setting speċjali.

L-iskripts huma miktuba f'lingwa ta 'programmar orjentata lejn l-oġġetti, li l-kmandi tagħhom huma msemmija skond l-istess prinċipju bħall-cmdlets diskussi qabel: "Azzjoni-Oġġett" ("Verb-Nom"). L-għan ewlieni tiegħu huwa li awtomatizza l-kompiti amministrattivi, iżda hija lingwa interpretata sħiħa li għandha l-kostruzzjonijiet kollha meħtieġa: qabża kondizzjonali, loops, varjabbli, arrays, oġġetti, ġestjoni ta 'żbalji, eċċ. Kwalunkwe editur tat-test huwa tajjeb għall-iskript, iżda huwa aħjar li tħaddem Windows PowerShell ISE.

Tista 'tgħaddi parametri lill-iskript, tagħmilhom meħtieġa, u tistabbilixxi valuri default. Barra minn hekk, il-Windows PowerShell jippermettilek li toħloq u ssejjaħ funzjonijiet bl-istess mod bħas-cmdlets, billi tuża l-Function construct u ċineg kaboċċi. Skript b'funzjonijiet jissejjaħ modulu u għandu estensjoni .psm1. Il-moduli għandhom jinħażnu f'direttorji definiti fil-varjabbli tal-ambjent PowerShell. Tista' tarahom bil-kmand li ġej:

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

Ċineg

Fl-aħħar eżempju, użajna kostruzzjoni li hija familjari għall-utenti tal-qoxra Unix. Fil-Windows PowerShell, il-bar vertikali jippermettilek ukoll li tgħaddi l-output ta 'kmand wieħed għall-input ta' ieħor, iżda hemm differenza sinifikanti fl-implimentazzjoni tal-pipeline: m'għadniex nitkellmu dwar sett ta 'karattri jew xi tip ta' test. Cmdlets inkorporati jew funzjonijiet definiti mill-utent jirritornaw oġġetti jew arrays ta 'oġġetti, u jistgħu wkoll jirċievuhom bħala input. Bħall-qoxra Bourne u l-bosta suċċessuri tagħha, PowerShell jagħmel ħidmiet kumplessi aktar faċli b'pipeline.

L-aktar eżempju sempliċi tal-pipeline jidher bħal dan:

Get-Service | Sort-Object -property Status

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin
L-ewwel, is-cmdlet Get-Service jiġi esegwit, u mbagħad is-servizzi kollha riċevuti minnu jiġu mgħoddija lis-cmdlet Sort-Object għall-issortjar mill-proprjetà Status. Liema argument jiġi mgħoddi r-riżultat tat-taqsima preċedenti tal-pipeline jiddependi fuq it-tip tiegħu - normalment huwa InputObject. Din il-kwistjoni se tiġi diskussa f'aktar dettall f'artiklu ddedikat għal-lingwa ta' programmar PowerShell. 

Jekk tixtieq, tista 'tkompli l-katina u tgħaddi r-riżultat tal-operazzjoni Sort-Object lil cmdlet ieħor (se jiġu eżegwiti mix-xellug għal-lemin). Mill-mod, l-utenti tal-Windows għandhom ukoll aċċess għall-kostruzzjoni għall-paġnar familjari għall-Unixoids kollha: 

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

It-tmexxija tal-kompiti fl-isfond 

Spiss, huwa meħtieġ li titħaddem ċertu kmand fl-isfond, sabiex ma tistennax ir-riżultat tal-eżekuzzjoni tiegħu fis-sessjoni tal-qoxra. Windows PowerShell għandu diversi cmdlets għal dan il-każ:

Start-Job - it-tnedija ta' kompitu ta' sfond;
Stop-Job — twaqqaf il-kompitu fl-isfond;
Get-Job — tara l-lista tal-kompiti fl-isfond;
Receive-Job — tara r-riżultat tal-eżekuzzjoni tal-kompitu fl-isfond;
Remove-Job — it-tħassir ta' kompitu fl-isfond;
Wait-Job - it-trasferiment tal-kompitu fl-isfond lura għall-console.

Biex nibdew kompitu fl-isfond, nużaw is-cmdlet Start-Job u nispeċifikaw kmand jew sett ta’ kmandi f’ċingi kaboċċi:

Start-Job {Get-Service}

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin
Ħidmiet fl-isfond fil-Windows PowerShell jistgħu jiġu manipulati billi jkunu jafu isimhom. L-ewwel, ejja nitgħallmu kif turihom:

Get-Job

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin
Issa ejja nuru r-riżultat tax-xogħol Job1:

Receive-Job Job1 | more

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin
Kollox huwa pjuttost sempliċi.

Eżekuzzjoni ta 'kmand mill-bogħod

Windows PowerShell jippermettilek tesegwixxi kmandi u skripts mhux biss fuq il-kompjuter lokali, iżda wkoll fuq kompjuter remot, u anke fuq grupp sħiħ ta 'magni. Hemm diversi modi kif tagħmel dan:

  • Ħafna cmdlets għandhom parametru -ComputerName, iżda b'dan il-mod mhux se jaħdem, pereżempju, biex jinħoloq conveyor;
  • Cmdlet Enter-PSSession jippermettilek toħloq sessjoni interattiva fuq magna remota; 
  • Bl-użu tal-cmdlet Invoke-Command tista' tmexxi kmandi jew skripts fuq kompjuter remot wieħed jew aktar.

Verżjonijiet ta' PowerShell

PowerShell inbidel ħafna mill-ewwel rilaxx tiegħu fl-2006. L-għodda hija disponibbli għal ħafna sistemi li jaħdmu fuq pjattaformi hardware differenti (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 u OS X. L-aħħar rilaxx 6.2 rilaxxat fl-10 ta’ Jannar 2018. Skripts miktuba għal verżjonijiet preċedenti x'aktarx li jaħdmu f'verżjonijiet aktar tard, iżda backporting jista 'jkun problematiku minħabba li PowerShell introduċa numru kbir ta' cmdlets ġodda matul is-snin ta 'żvilupp. Tista' ssib il-verżjoni tal-qoxra tal-kmand installata fuq il-kompjuter billi tuża l-proprjetà PSVersion tal-varjabbli inkorporat $PSVersionTable:

$PSVersionTable.PSVersion

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin
Tista' wkoll tuża l-cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin
L-istess isir bil-cmdlet Get-Host. Fil-fatt, hemm ħafna għażliet, iżda biex tużahom trid titgħallem il-lingwa tal-ipprogrammar PowerShell, li aħna se nagħmlu f' artikolu li jmiss

Riżultati ta ' 

Microsoft irnexxielha toħloq qoxra tassew qawwija b'ambjent integrat konvenjenti għall-iżvilupp ta 'skripts. Hija differenti mill-għodod familjari għalina fid-dinja ta 'Unix minn integrazzjoni profonda ma' sistemi operattivi tal-familja Windows, kif ukoll ma 'softwer għalihom u l-pjattaforma .NET Core. PowerShell jista 'jissejjaħ qoxra orjentata lejn l-oġġetti minħabba li cmdlets u funzjonijiet definiti mill-utent jirritornaw oġġetti jew firxa ta' oġġetti u jistgħu jieħduhom bħala input. Aħna naħsbu li l-amministraturi kollha tas-server fuq il-Windows għandhom jippossjedu din l-għodda: għadda ż-żmien meta setgħu jgħaddu mingħajr il-linja tal-kmand. Qoxra tal-console avvanzata hija speċjalment meħtieġa fuq il-VPS tagħna bi prezz baxx li jaħdem Windows Server Core, iżda dik hija storja kompletament differenti.

X'inhu Windows PowerShell u b'xiex jittiekel? Parti 1: Karatteristiċi Ewlenin

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.

Liema suġġetti għandhom jiġu koperti l-ewwel fl-artikoli li jmiss fis-sensiela?

  • 53,2%Ipprogrammar f'PowerShell123

  • 42,4%Funzjonijiet u Moduli PowerShell98

  • 22,1%Kif tiffirma l-iskripts tiegħek stess?51

  • 12,1%Ħidma ma' repożitorji permezz ta' fornituri (fornituri)28

  • 57,6%Awtomatizzazzjoni tal-Amministrazzjoni tal-Kompjuter b'PowerShell133

  • 30,7%Ġestjoni tas-softwer u inkorporazzjoni ta' eżekutibbli PowerShell fi prodotti ta' partijiet terzi71

Ivvutaw 231 utent. 37 utenti astjenew.

Sors: www.habr.com

Żid kumment