Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok

Sa kasaysayan, ang mga command-line utilities sa Unix system ay mas mahusay na binuo kaysa sa Windows, ngunit sa pagdating ng isang bagong solusyon, ang sitwasyon ay nagbago.

Binibigyang-daan ng Windows PowerShell ang mga administrator ng system na i-automate ang karamihan sa mga karaniwang gawain. Sa tulong nito, maaari mong baguhin ang mga setting, ihinto at simulan ang mga serbisyo, at magsagawa rin ng pagpapanatili ng karamihan sa mga naka-install na application. Mali na isipin ang asul na window bilang isa pang command interpreter. Ang diskarte na ito ay hindi sumasalamin sa kakanyahan ng mga inobasyon na iminungkahi ng Microsoft. Sa katunayan, ang mga kakayahan ng Windows PowerShell ay mas malawak: sa isang maikling serye ng mga artikulo, susubukan naming malaman kung paano naiiba ang solusyon ng Microsoft sa mga tool na mas pamilyar sa amin.

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok

Pangunahing mga tampok 

Siyempre, ang Windows PowerShell ay pangunahing command shell na may scripting language, na orihinal na binuo sa .NET Framework at sa ibang pagkakataon sa .NET Core. Hindi tulad ng mga shell na tumatanggap at nagbabalik ng data ng text, gumagana ang Windows PowerShell sa mga klase ng .NET, na may mga katangian at pamamaraan. Binibigyang-daan ka ng PowerShell na magpatakbo ng mga karaniwang command at nagbibigay din sa iyo ng access sa mga bagay na COM, WMI, at ADSI. Gumagamit ito ng iba't ibang mga imbakan, tulad ng file system o ang Windows registry, para sa pag-access kung saan ang tinatawag na. mga supplier. Ito ay nagkakahalaga ng pagpuna sa posibilidad ng pag-embed ng PowerShell executable na mga bahagi sa iba pang mga application upang ipatupad ang iba't ibang mga operasyon, kasama. sa pamamagitan ng graphical na interface. Totoo rin ang kabaligtaran: maraming application ng Windows ang nagbibigay ng access sa kanilang mga interface ng pamamahala sa pamamagitan ng PowerShell. 

Binibigyang-daan ka ng Windows PowerShell na:

  • Baguhin ang mga setting ng operating system;
  • Pamahalaan ang mga serbisyo at proseso;
  • I-configure ang mga tungkulin at bahagi ng server;
  • I-install ang software;
  • Pamahalaan ang naka-install na software sa pamamagitan ng mga espesyal na interface;
  • I-embed ang mga executable na bahagi sa mga third-party na programa;
  • Lumikha ng mga script upang i-automate ang mga gawain sa pangangasiwa;
  • Makipagtulungan sa file system, Windows registry, certificate store, atbp.

Shell at kapaligiran sa pag-unlad

Ang Windows PowerShell ay umiiral sa dalawang anyo: bilang karagdagan sa console emulator na may command shell, mayroong isang integrated scripting environment (ISE). Upang ma-access ang interface ng command line, piliin lamang ang naaangkop na shortcut mula sa menu ng Windows o patakbuhin ang powershell.exe mula sa Run menu. Ang isang asul na window ay lilitaw sa screen, na kapansin-pansing naiiba sa mga kakayahan mula sa antediluvian cmd.exe. Mayroong autocompletion at iba pang feature na pamilyar sa mga user ng command shell para sa mga Unix system.

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok

Upang gumana sa shell kailangan mong tandaan ang ilang mga keyboard shortcut:

  • Ang pataas at pababang mga arrow ay nag-scroll sa kasaysayan upang ulitin ang mga naunang nai-type na utos;
  • Ang kanang arrow sa dulo ng linya ay muling nagta-type ng nakaraang command character ayon sa karakter;
  • Tinatanggal ng Ctrl+Home ang nai-type na teksto mula sa posisyon ng cursor hanggang sa simula ng linya;
  • Tinatanggal ng Ctrl+End ang teksto mula sa cursor hanggang sa dulo ng linya.

Ang F7 ay nagpapakita ng isang window na may mga inilagay na command at pinapayagan kang pumili ng isa sa mga ito. Gumagana rin ang console sa pamamagitan ng pagpili ng text gamit ang mouse, copy-paste, pagpoposisyon ng cursor, pagtanggal, backspace - lahat ng gusto natin.

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok
Ang Windows PowerShell ISE ay isang ganap na development environment na may code editor na sumusuporta sa mga tab at syntax highlighting, isang command designer, isang built-in na debugger, at iba pang programming delight. Kung magsulat ka ng gitling pagkatapos ng pangalan ng command sa editor ng development environment, matatanggap mo ang lahat ng available na parameter sa drop-down list, na nagpapahiwatig ng uri. Maaari mong ilunsad ang PowerShell ISE alinman sa pamamagitan ng shortcut mula sa system menu o gamit ang executable file na powershell_ise.exe.

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok

Mga Cmdlet 

Sa Windows PowerShell, ang tinatawag na. mga cmdlet. Ito ay mga espesyal na .NET na klase na nagbibigay ng iba't ibang functionality. Ang mga ito ay pinangalanan ayon sa prinsipyong "Action-Object" (o "Verb-Noun, kung gusto mo), at ang hyphen-separated connective ay kahawig ng panaguri at paksa sa natural na mga pangungusap sa wika. Halimbawa, literal na nangangahulugang "Kumuha ng Tulong" o sa konteksto ng PowerShell: "Show-Help." Sa katunayan, ito ay isang analogue ng man command sa Unix system, at ang mga manual sa PowerShell ay kailangang hilingin sa ganitong paraan, at hindi sa pamamagitan ng pagtawag sa mga cmdlet gamit ang –help o /? key.. Huwag kalimutan ang tungkol sa online na dokumentasyon para sa PowerShell: Ang Microsoft ay medyo detalyado.

Bilang karagdagan sa Kumuha, ang mga cmdlet ay gumagamit din ng iba pang mga pandiwa upang tukuyin ang mga aksyon (at hindi lamang mga pandiwa, mahigpit na nagsasalita). Sa listahan sa ibaba ay nagbibigay kami ng ilang mga halimbawa:

Add - magdagdag;
Clear - malinis;
Enable - buksan;
Disable - patayin;
New - lumikha;
Remove - tanggalin;
Set - magtanong;
Start — tumakbo;
Stop - huminto;
Export - i-export;
Import - angkat.

Mayroong system, user at opsyonal na mga cmdlet: bilang resulta ng pagpapatupad, lahat sila ay nagbabalik ng isang bagay o isang hanay ng mga bagay. Hindi sila case sensitive, i.e. Mula sa pananaw ng command interpreter, walang pagkakaiba sa pagitan ng Get-Help at get-help. Ang simbolo na ';' ay ginagamit para sa paghihiwalay, ngunit ito ay kinakailangan lamang kung maraming cmdlet ang ipapatupad sa isang linya. 

Ang mga cmdlet ng Windows PowerShell ay pinagsama-sama sa mga module (NetTCPIP, Hyper-V, atbp.), at mayroong isang Get-Command cmdlet para sa paghahanap ayon sa bagay at aksyon. Maaari kang magpakita ng tulong dito tulad nito:

Get-Help Get-Command

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok

Bilang default, ang command ay nagpapakita ng mabilis na tulong, ngunit ang mga parameter (mga argumento) ay ipinapasa sa mga cmdlet kung kinakailangan. Sa tulong nila, maaari kang, halimbawa, makakuha ng detalyadong (-Detalyadong parameter) o kumpletong (-Buong) tulong, pati na rin ang mga halimbawa ng pagpapakita (-Mga halimbawa ng parameter):

Get-Help Get-Command -Examples

Ang tulong sa Windows PowerShell ay ina-update gamit ang Update-Help cmdlet. Kung ang isang linya ng mga utos ay lumabas na masyadong mahaba, ang mga cmdlet na argumento ay maaaring ilipat sa susunod sa pamamagitan ng pagsusulat ng service character na '''' at pagpindot sa Enter - ang pagtatapos lamang ng pagsusulat ng command sa isang linya at ang pagpapatuloy sa isa pa ay hindi gagana.

Nasa ibaba ang ilang halimbawa ng mga karaniwang cmdlet: 

Get-Process — ipakita ang mga prosesong tumatakbo sa system;
Get-Service — ipakita ang mga serbisyo at ang kanilang katayuan;
Get-Content — ipakita ang mga nilalaman ng file.

Para sa mga madalas na ginagamit na cmdlet at mga panlabas na kagamitan, ang Windows PowerShell ay may maiikling kasingkahulugan - mga alias. Halimbawa, ang dir ay isang alias para sa Get-ChildItem. Mayroon ding mga analogue ng mga command mula sa Unix system sa listahan ng mga kasingkahulugan (ls, ps, atbp.), at ang Get-Help cmdlet ay tinatawag ng help command. Maaaring matingnan ang buong listahan ng mga kasingkahulugan gamit ang Get-Alias ​​​​cmdlet:

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok

Mga PowerShell Script, Function, Module, at Wika

Ang mga script ng Windows PowerShell ay iniimbak bilang mga plain text file na may extension na .ps1. Hindi mo maaaring patakbuhin ang mga ito sa pamamagitan ng pag-double click: kailangan mong mag-right-click upang buksan ang menu ng konteksto at piliin ang “Run in PowerShell”. Mula sa console kakailanganin mong tukuyin ang buong landas patungo sa script, o pumunta sa naaangkop na direktoryo at isulat ang pangalan ng file. Ang mga tumatakbong script ay limitado rin ng patakaran ng system, at upang suriin ang kasalukuyang mga setting maaari mong gamitin ang Get-ExecutionPolicy cmdlet, na magbabalik ng isa sa mga sumusunod na halaga:

Restricted — ang pagpapatakbo ng mga script ay ipinagbabawal (bilang default);
AllSigned — ang mga script lamang na nilagdaan ng isang pinagkakatiwalaang developer ang pinapayagang tumakbo;
RemoteSigned - Pinapayagan na magpatakbo ng nilagdaan at sariling mga script;
Unrestricted - Pinapayagan na magpatakbo ng anumang mga script.

Ang administrator ay may dalawang pagpipilian. Ang pinaka-secure ay nagsasangkot ng pag-sign ng mga script, ngunit ito ay isang seryosong pangkukulam - haharapin natin ito sa mga sumusunod na artikulo. Ngayon, gawin natin ang landas ng hindi bababa sa pagtutol at baguhin ang patakaran:

Set-ExecutionPolicy RemoteSigned

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok
Upang gawin ito, kakailanganin mong patakbuhin ang PowerShell bilang isang administrator, bagama't maaari kang gumamit ng isang espesyal na parameter upang baguhin ang patakaran para sa kasalukuyang user.

Ang mga script ay isinulat sa isang object-oriented programming language, ang mga utos kung saan pinangalanan ayon sa parehong prinsipyo tulad ng naunang tinalakay na mga cmdlet: "Action-Object" ("Verb-Noun"). Ang pangunahing layunin nito ay upang i-automate ang mga gawain sa pangangasiwa, ngunit ito ay isang ganap na na-interpret na wika na mayroong lahat ng kinakailangang mga konstruksyon: conditional jump, loops, variables, arrays, objects, error handling, atbp. Ang anumang text editor ay angkop para sa pagsulat ng mga script, ngunit ito ay pinaka-maginhawa upang patakbuhin ang Windows PowerShell ISE.

Maaari mong ipasa ang mga parameter sa script, gawin itong mandatory, at magtakda din ng mga default na halaga. Pinapayagan ka rin ng Windows PowerShell na gumawa at tumawag ng mga function sa parehong paraan tulad ng mga cmdlet, gamit ang Function construct at curly braces. Ang isang script na may mga function ay tinatawag na module at may extension na .psm1. Dapat na nakaimbak ang mga module sa mga direktoryo na tinukoy sa mga variable ng kapaligiran ng PowerShell. Maaari mong tingnan ang mga ito gamit ang sumusunod na command:

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

Conveyors

Sa huling halimbawa, gumamit kami ng disenyong pamilyar sa mga gumagamit ng mga shell ng Unix. Sa Windows PowerShell, pinapayagan ka rin ng vertical bar na ipasa ang output ng isang command sa input ng isa pa, ngunit may malaking pagkakaiba sa pagpapatupad ng pipeline: hindi na namin pinag-uusapan ang isang hanay ng mga character o ilang teksto. Ang mga built-in na cmdlet o function na tinukoy ng user ay nagbabalik ng mga bagay o array ng mga bagay, at maaari ding tumanggap ng mga ito bilang input. Tulad ng Bourne shell at ng maraming kapalit nito, ang PowerShell ay gumagamit ng pipeline upang pasimplehin ang mga kumplikadong gawain.

Ang pinakasimpleng halimbawa ng pipeline ay ganito ang hitsura:

Get-Service | Sort-Object -property Status

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok
Ang Get-Service cmdlet ay unang isinasagawa, at pagkatapos ay ang lahat ng mga serbisyong natatanggap nito ay ipapasa sa Sort-Object cmdlet para sa pag-uuri ayon sa Status property. Aling argumento ang ipapasa sa resulta ng nakaraang seksyon ng pipeline ay depende sa uri nito - kadalasan ito ay InputObject. Ang isyung ito ay tatalakayin nang mas detalyado sa isang artikulo na nakatuon sa PowerShell programming language. 

Kung ninanais, maaari mong ipagpatuloy ang chain at ipasa ang resulta ng Sort-Object sa isa pang cmdlet (sila ay isasagawa mula kaliwa hanggang kanan). Sa pamamagitan ng paraan, ang mga gumagamit ng Windows ay mayroon ding access sa disenyo na pamilyar sa lahat ng Unixoids para sa page-by-page na output: 

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

Pagpapatakbo ng mga gawain sa background 

Kadalasan kinakailangan na magpatakbo ng isang tiyak na utos sa background upang hindi maghintay para sa resulta ng pagpapatupad nito sa session ng shell. Ang Windows PowerShell ay may ilang mga cmdlet para sa sitwasyong ito:

Start-Job - maglunsad ng isang gawain sa background;
Stop-Job — paghinto ng isang gawain sa background;
Get-Job — pagtingin sa listahan ng mga gawain sa background;
Receive-Job — tinitingnan ang resulta ng isang gawain sa background;
Remove-Job — pagtanggal ng isang gawain sa background;
Wait-Job — paglilipat ng gawain sa background pabalik sa console.

Upang magsimula ng isang gawain sa background, ginagamit namin ang Start-Job cmdlet at tumukoy ng command o set ng mga command sa curly braces:

Start-Job {Get-Service}

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok
Ang mga gawain sa background sa Windows PowerShell ay maaaring manipulahin sa pamamagitan ng pag-alam sa kanilang mga pangalan. Una, alamin natin kung paano ipakita ang mga ito:

Get-Job

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok
Ngayon ipakita natin ang resulta ng Job1:

Receive-Job Job1 | more

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok
Ito ay medyo simple.

Remote command execution

Binibigyang-daan ka ng Windows PowerShell na magpatakbo ng mga command at script hindi lamang sa lokal, kundi pati na rin sa isang malayuang computer at maging sa isang buong grupo ng mga makina. Mayroong ilang mga paraan upang gawin ito:

  • Maraming cmdlet ang may parameter -ComputerName, ngunit sa ganitong paraan hindi ito magiging posible, halimbawa, upang lumikha ng isang conveyor;
  • Cmdlet Enter-PSSession nagbibigay-daan sa iyo na lumikha ng isang interactive na session sa isang remote na makina; 
  • Gamit ang isang cmdlet Invoke-Command Maaari kang magpatakbo ng mga command o script sa isa o higit pang malalayong computer.

Mga bersyon ng PowerShell

Mula noong unang paglabas nito noong 2006, malaki ang pinagbago ng PowerShell. Available ang tool para sa maraming system na tumatakbo sa iba't ibang platform ng hardware (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 at OS X. Ang pinakabagong release 6.2 ay inilabas noong Enero 10, 2018. Ang mga script na isinulat para sa mga naunang bersyon ay malamang na gumana sa mga susunod na bersyon, ngunit maaaring lumitaw ang mga problema sa isang reverse transfer, dahil sa paglipas ng mga taon ng pag-unlad, isang malaking bilang ng mga bagong cmdlet ang lumitaw sa PowerShell. Maaari mong malaman ang bersyon ng command shell na naka-install sa iyong computer gamit ang PSVersion property ng $PSVersionTable built-in na variable:

$PSVersionTable.PSVersion

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok
Maaari mo ring gamitin ang cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok
Ang parehong bagay ay maaaring gawin gamit ang Get-Host cmdlet. Sa katunayan, maraming mga pagpipilian, ngunit upang magamit ang mga ito kailangan mong matutunan ang PowerShell programming language, na kung ano ang gagawin namin sa susunod na artikulo

Mga resulta ng 

Nagawa ng Microsoft na lumikha ng isang tunay na malakas na command shell na may maginhawang pinagsama-samang kapaligiran para sa pagbuo ng mga script. Ang pinagkaiba nito sa mga tool na pamilyar sa atin sa mundo ng Unix ay ang malalim na pagsasama nito sa mga operating system ng pamilyang Windows, gayundin sa software para sa kanila at sa .NET Core platform. Ang PowerShell ay maaaring tawaging object-oriented na shell dahil ang mga cmdlet at user-defined function ay nagbabalik ng mga object o arrays ng mga object at maaaring tumanggap ng mga ito bilang input. Sa tingin namin ang lahat ng mga administrator ng Windows server ay dapat magkaroon ng tool na ito: lumipas na ang oras kung kailan magagawa nila nang wala ang command line. Ang isang advanced na console shell ay kinakailangan lalo na sa ang aming murang VPS na nagpapatakbo ng Windows Server Core, ngunit iyon ay isang ganap na naiibang kuwento.

Ano ang Windows PowerShell at saan ito kinakain? Bahagi 1: Mga Pangunahing Tampok

Ang mga rehistradong user lamang ang maaaring lumahok sa survey. Mag-sign in, pakiusap

Anong mga paksa ang dapat unang talakayin sa susunod na mga artikulo sa serye?

  • 53,2%Programming sa PowerShell123

  • 42,4%Mga Function at Module ng PowerShell98

  • 22,1%Paano pumirma sa sarili mong script?51

  • 12,1%Paggawa gamit ang mga storage sa pamamagitan ng mga provider28

  • 57,6%I-automate ang pangangasiwa ng computer gamit ang PowerShell133

  • 30,7%Pamamahala ng software at pag-embed ng mga executable ng PowerShell sa mga third-party na produkto71

231 user ang bumoto. 37 na user ang umiwas.

Pinagmulan: www.habr.com

Magdagdag ng komento