Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj

Historie, komandliniaj utilecoj en Unikso-sistemoj estas pli bone evoluintaj ol en Vindozo, sed kun la apero de nova solvo, la situacio ŝanĝiĝis.

Windows PowerShell permesas al sistemadministrantoj aŭtomatigi la plej multajn rutinajn taskojn. Kun ĝia helpo, vi povas ŝanĝi agordojn, haltigi kaj komenci servojn, kaj ankaŭ plenumi prizorgadon de la plej multaj instalitaj aplikoj. Estus malĝuste percepti la bluan fenestron kiel alian komandinterpretilon. Ĉi tiu aliro ne reflektas la esencon de la novigoj proponitaj de Microsoft. Fakte, la kapabloj de Windows PowerShell estas multe pli larĝaj: en mallonga serio de artikoloj ni provos eltrovi kiel la Mikrosofta solvo diferencas de la iloj, kiujn ni pli konas.

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj

Ŝlosilaj trajtoj 

Kompreneble, Windows PowerShell estas ĉefe komanda ŝelo kun skriptlingvo, origine konstruita sur la .NET Framework kaj poste sur la .NET Kerno. Male al ŝeloj, kiuj akceptas kaj resendas tekstajn datumojn, Windows PowerShell funkcias kun .NET-klasoj, kiuj havas ecojn kaj metodojn. PowerShell permesas al vi ruli oftajn komandojn kaj ankaŭ donas al vi aliron al COM, WMI kaj ADSI-objektoj. Ĝi uzas diversajn stokaĵojn, kiel la dosiersistemon aŭ la Vindozan registron, por aliro al kiu la tn. provizantoj. Indas noti la eblon enkonstrui PowerShell plenumeblajn komponantojn en aliajn aplikojn por efektivigi diversajn operaciojn, inkl. per grafika interfaco. La inverso ankaŭ estas vera: multaj Vindozaj aplikaĵoj disponigas aliron al siaj administradinterfacoj per PowerShell. 

Windows PowerShell permesas al vi:

  • Ŝanĝi agordojn de operaciumo;
  • Administri servojn kaj procezojn;
  • Agordi servilaj roloj kaj komponantoj;
  • Instali programaron;
  • Administri instalitan programaron per specialaj interfacoj;
  • Enigi ruleblajn komponantojn en triajn programojn;
  • Krei skriptojn por aŭtomatigi administrajn taskojn;
  • Laboru kun la dosiersistemo, Vindoza registro, atestilo, ktp.

Ŝelo kaj evolumedio

Windows PowerShell ekzistas en du formoj: krom la konzola emulilo kun komanda ŝelo, ekzistas integra skriptmedio (ISE). Por aliri la komandlinian interfacon, simple elektu la taŭgan ŝparvojon el la Vindoza menuo aŭ rulu powershell.exe el la Rulu menuo. Blua fenestro aperos sur la ekrano, rimarkeble malsama en kapabloj de la antaŭdiluvia cmd.exe. Estas aŭtomata kompletigo kaj aliaj funkcioj konataj al uzantoj de komandŝeloj por Uniksaj sistemoj.

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj

Por labori kun la ŝelo, vi devas memori kelkajn klavarajn ŝparvojojn:

  • La sagoj supren kaj malsupren ruliĝas tra la historio por ripeti antaŭe tajpitajn komandojn;
  • La dekstra sago ĉe la fino de la linio retajpas la antaŭan komandan signon post signo;
  • Ctrl+Hejmo forigas la tajpitan tekston de la kursora pozicio ĝis la komenco de la linio;
  • Ctrl+Fino forigas tekston de la kursoro ĝis la fino de la linio.

F7 montras fenestron kun la enigitaj komandoj kaj permesas elekti unu el ili. La konzolo funkcias ankaŭ elektante tekston per la muso, kopii-alglui, poziciigadon de kursoro, forigo, retropaŝo - ĉio, kion ni amas.

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj
Windows PowerShell ISE estas plentaŭga evolua medio kun kodredaktilo, kiu subtenas langetojn kaj sintaksan reliefigon, komanddezajniston, enkonstruitan erarserĉilon kaj aliajn programajn ĝojojn. Se vi skribas streketon post la komandnomo en la evolua medio-redaktilo, vi ricevos ĉiujn disponeblajn parametrojn en la fal-listo, indikante la tipon. Vi povas lanĉi PowerShell ISE aŭ per ŝparvojo de la sistema menuo aŭ uzante la plenumeblan dosieron powershell_ise.exe.

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj

Cmdlets 

En Windows PowerShell, la tn. cmdlets. Ĉi tiuj estas specialigitaj .NET-klasoj, kiuj provizas diversajn funkciojn. Ili estas nomitaj laŭ la principo "Ago-Objekto" (aŭ "Verbo-Substantivo, se vi preferas), kaj la streketo-separata konektilo similas la predikaton kaj subjekton en naturlingvaj frazoj. Ekzemple, Get-Help laŭvorte signifas "Get-Help" aŭ en PowerShell kunteksto: "Show-Help". Fakte, ĉi tio estas analogo de la man-komando en Unikso-sistemoj, kaj manlibroj en PowerShell devas esti petitaj tiel, kaj ne per vokado de cmdletoj per la klavo –help aŭ /?. Ne forgesu pri la reta dokumentado por PowerShell: Microsoft havas ĝin sufiĉe detala.

Krom Get, cmdletoj ankaŭ uzas aliajn verbojn por indiki agojn (kaj ne nur verbojn, strikte parolante). En la suba listo ni donas kelkajn ekzemplojn:

Add - aldoni;
Clear - pura;
Enable - ŝalti;
Disable - Malŝalti;
New - krei;
Remove - forigi;
Set - demandi;
Start - kuri;
Stop - halti;
Export — eksporto;
Import — importi.

Estas sistemo, uzanto kaj laŭvolaj cmdlets: kiel rezulto de ekzekuto, ili ĉiuj resendas objekton aŭ aron da objektoj. Ili ne distingas minusklecojn, t.e. El la vidpunkto de la komanda interpretisto, ne estas diferenco inter Get-Help kaj get-help. La simbolo ';' estas uzata por apartigo, sed ĝi estas postulata nur se pluraj cmdletoj estas ekzekutitaj sur unu linio. 

Windows PowerShell cmdletoj estas grupigitaj en moduloj (NetTCPIP, Hyper-V, ktp.), kaj ekzistas Get-Command cmdlet por serĉi laŭ objekto kaj ago. Vi povas montri helpon pri ĝi tiel:

Get-Help Get-Command

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj

Defaŭlte, la komando montras rapidan helpon, sed parametroj (argumentoj) estas transdonitaj al cmdletoj laŭbezone. Kun ilia helpo, vi povas, ekzemple, ricevi detalan (-Detala parametro) aŭ kompletan (-Plena) helpon, kaj ankaŭ montri ekzemplojn (-Ekzemploj parametro):

Get-Help Get-Command -Examples

Helpo en Windows PowerShell estas ĝisdatigita per la cmdlet Update-Help. Se linio de komandoj montriĝas tro longa, la cmdlet-argumentoj povas esti transdonitaj al la sekva skribante la serva signo '`' kaj premante Enter - simple fini skribi komandon sur unu linio kaj daŭrigi sur alia ne funkcios.

Malsupre estas kelkaj ekzemploj de oftaj cmdletoj: 

Get-Process — montri procezojn kurantajn en la sistemo;
Get-Service — spektakloservoj kaj ilia statuso;
Get-Content — montri la enhavon de la dosiero.

Por ofte uzataj cmdletoj kaj eksteraj iloj, Windows PowerShell havas mallongajn sinonimojn - kaŝnomojn. Ekzemple, dir estas kaŝnomo por Get-ChildItem. Ekzistas ankaŭ analogoj de komandoj de Unikso-sistemoj en la listo de sinonimoj (ls, ps, ktp.), kaj la Get-Help cmdlet estas vokita per la help-komando. La plena listo de sinonimoj videblas per la cmdlet Get-Alias:

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj

PowerShell-Skriptoj, Funkcioj, Moduloj kaj Lingvo

Windows PowerShell-skriptoj estas konservitaj kiel simplaj tekstaj dosieroj kun etendo .ps1. Vi ne povas ruli ilin per duobla klako: vi devas dekstre alklaki por malfermi la kuntekstan menuon kaj elekti "Run en PowerShell". De la konzolo vi devos aŭ specifi la plenan vojon al la skripto, aŭ iri al la taŭga dosierujo kaj skribi la dosiernomon. Rulado de skriptoj ankaŭ estas limigita de sistema politiko, kaj por kontroli la nunajn agordojn vi povas uzi la cmdlet Get-ExecutionPolicy, kiu resendos unu el la sekvaj valoroj:

Restricted — ruli skriptojn estas malpermesita (defaŭlte);
AllSigned — nur skriptoj subskribitaj de fidinda programisto rajtas ruliĝi;
RemoteSigned - Permesita lanĉi subskribitajn kaj proprajn skriptojn;
Unrestricted - Permesita ruli ajnajn skriptojn.

La administranto havas du eblojn. La plej sekura implicas subskribi skriptojn, sed ĉi tio estas sufiĉe serioza sorĉado - ni traktos ĝin en la sekvaj artikoloj. Nun ni prenu la vojon de malplej rezista kaj ŝanĝu la politikon:

Set-ExecutionPolicy RemoteSigned

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj
Por fari tion, vi devos ruli PowerShell kiel administranto, kvankam vi povas uzi specialan parametron por ŝanĝi la politikon por la nuna uzanto.

Skriptoj estas skribitaj en objekt-orientita programlingvo, kies ordonoj estas nomitaj laŭ la sama principo kiel la antaŭe diskutitaj cmdletoj: "Ago-Objekto" ("Verbo-Substantivo"). Ĝia ĉefa celo estas aŭtomatigi administrajn taskojn, sed ĝi estas plentaŭga interpretita lingvo, kiu havas ĉiujn necesajn konstrukciojn: kondiĉa salto, cikloj, variabloj, tabeloj, objektoj, erartraktado ktp. Ajna tekstredaktilo taŭgas por verki skriptojn, sed estas plej oportune ruli Windows PowerShell ISE.

Vi povas transdoni parametrojn al la skripto, fari ilin devigaj, kaj ankaŭ agordi defaŭltajn valorojn. Windows PowerShell ankaŭ permesas krei kaj voki funkciojn sammaniere kiel cmdletoj, uzante la Funkcion-konstruaĵon kaj buklajn krampojn. Skripto kun funkcioj nomiĝas modulo kaj havas etendon .psm1. Moduloj devas esti stokitaj en dosierujoj difinitaj en PowerShell-mediaj variabloj. Vi povas vidi ilin uzante la jenan komandon:

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

Transportistoj

En la lasta ekzemplo, ni uzis dezajnon konatan al uzantoj de Uniksaj ŝeloj. En Windows PowerShell, la vertikala stango ankaŭ ebligas al vi transdoni la eligon de unu komando al la enigo de alia, sed estas grava diferenco en la efektivigo de la dukto: ni ne plu parolas pri aro da signoj aŭ iu teksto. Enkonstruitaj cmdletoj aŭ uzant-difinitaj funkcioj resendas objektojn aŭ tabelojn de objektoj, kaj ankaŭ povas ricevi ilin kiel enigaĵon. Kiel la Bourne-ŝelo kaj ĝiaj multaj posteuloj, PowerShell uzas dukton por simpligi kompleksajn taskojn.

La plej simpla ekzemplo de dukto aspektas jene:

Get-Service | Sort-Object -property Status

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj
La cmdleto Get-Service unue estas ekzekutita, kaj tiam ĉiuj servoj kiujn ĝi ricevas estas transdonitaj al la cmdleto Sort-Object por ordigi laŭ la posedaĵo Status. Al kiu argumento la rezulto de la antaŭa sekcio de la dukto estas pasita dependas de ĝia tipo - kutime ĝi estas InputObject. Ĉi tiu afero estos diskutita pli detale en artikolo dediĉita al la programlingvo PowerShell. 

Se vi volas, vi povas daŭrigi la ĉenon kaj transdoni la rezulton de Sort-Object al alia cmdlet (ili estos ekzekutitaj de maldekstre dekstren). Cetere, Vindozaj uzantoj ankaŭ havas aliron al la dezajno konata al ĉiuj Unixoids por paĝo-post-paĝa eligo: 

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

Kuranta taskojn en la fono 

Sufiĉe ofte necesas ruli certan komandon en la fono por ne atendi la rezulton de ĝia ekzekuto en la ŝela sesio. Windows PowerShell havas plurajn cmdletojn por ĉi tiu situacio:

Start-Job — lanĉi fonan taskon;
Stop-Job — ĉesigi fonan taskon;
Get-Job — vidi la liston de fonaj taskoj;
Receive-Job — vidi la rezulton de fona tasko;
Remove-Job — forigi fonan taskon;
Wait-Job — translokigi la fonan taskon reen al la konzolo.

Por komenci fonan taskon, ni uzas la Start-Job cmdlet kaj specifas komandon aŭ aron de komandoj en krampoj:

Start-Job {Get-Service}

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj
Fonaj taskoj en Windows PowerShell povas esti manipulitaj sciante iliajn nomojn. Unue, ni lernu kiel montri ilin:

Get-Job

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj
Nun ni montru la rezulton de Job1:

Receive-Job Job1 | more

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj
Ĝi estas sufiĉe simpla.

Fora komanda ekzekuto

Windows PowerShell permesas ruli komandojn kaj skriptojn ne nur loke, sed ankaŭ en fora komputilo kaj eĉ en tuta grupo de maŝinoj. Estas pluraj manieroj fari tion:

  • Multaj cmdletoj havas parametron -ComputerName, sed tiamaniere ne eblos, ekzemple, krei transportilon;
  • Cmdlet Enter-PSSession permesas krei interagan sesion sur fora maŝino; 
  • Uzante cmdlet Invoke-Command Vi povas ruli komandojn aŭ skriptojn sur unu aŭ pluraj malproksimaj komputiloj.

PowerShell-versioj

Ekde ĝia unua eldono en 2006, PowerShell multe ŝanĝiĝis. La ilo disponeblas por multaj sistemoj funkcianta sur malsamaj aparataj platformoj (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/Linukso kaj OS X. La plej nova eldono 6.2 estis publikigita la 10-an de januaro 2018. Skriptoj skribitaj por pli fruaj versioj tre verŝajne funkcios en pli postaj, sed problemoj povas ekesti kun inversa translokigo, ĉar dum la jaroj de evoluo, granda nombro da novaj cmdletoj aperis en PowerShell. Vi povas ekscii la version de la komanda ŝelo instalita en via komputilo uzante la posedaĵon PSVersion de la enkonstruita variablo $PSVersionTable:

$PSVersionTable.PSVersion

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj
Vi ankaŭ povas uzi la cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj
La sama afero povas esti farita per la Get-Host cmdlet. Fakte, estas multaj ebloj, sed por uzi ilin vi bezonas lerni la programlingvon PowerShell, kion ni faros en sekva artikolo

Rezultoj 

Mikrosofto sukcesis krei vere potencan komandan ŝelon kun oportuna integra medio por disvolvi skriptojn. Kio distingas ĝin de la iloj, kiujn ni konas en la mondo Unikso, estas ĝia profunda integriĝo kun operaciumoj de la Vindoza familio, same kiel kun programaro por ili kaj la platformo .NET Core. PowerShell povas esti nomita objekt-orientita ŝelo ĉar cmdletoj kaj uzant-difinitaj funkcioj resendas objektojn aŭ tabelojn de objektoj kaj povas ricevi ilin kiel enigaĵon. Ni opinias, ke ĉiuj administrantoj de Windows-servilo devus posedi ĉi tiun ilon: pasis la tempo, kiam ili povus malhavi la komandlinion. Altnivela konzolo estas precipe necesa nia malmultekosta VPS funkcianta Windows Server Core, sed tio estas tute alia historio.

Kio estas Windows PowerShell kaj per kio ĝi estas manĝata? Parto 1: Ŝlosilaj Trajtoj

Nur registritaj uzantoj povas partopreni la enketon. Ensaluti, bonvolu.

Kiujn temojn oni unue traktu en la venontaj artikoloj de la serio?

  • 53,2%Programado en PowerShell123

  • 42,4%PowerShell98 Funkcioj kaj Moduloj

  • 22,1%Kiel subskribi viajn proprajn skriptojn?51

  • 12,1%Laborante kun stokado per provizantoj28

  • 57,6%Aŭtomatigu komputilan administradon per PowerShell133

  • 30,7%Administri programaron kaj enkonstrui PowerShell-ruleblajn ekzekutaĵojn en triajn produktojn71

231 uzantoj voĉdonis. 37 uzantoj sindetenis.

fonto: www.habr.com

Aldoni komenton