Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle

Istorikman, sèvis piblik liy kòmand sou sistèm Unix yo pi byen devlope pase sou Windows, men ak avenman nan yon nouvo solisyon, sitiyasyon an te chanje.

Windows PowerShell pèmèt administratè sistèm yo otomatize pifò travay woutin yo. Avèk èd li, ou ka chanje anviwònman, sispann epi kòmanse sèvis yo, epi tou fè antretyen nan aplikasyon ki pi enstale. Li ta mal pou w wè fenèt ble a kòm yon lòt entèprèt kòmand. Apwòch sa a pa reflete sans nan inovasyon yo pwopoze pa Microsoft. An reyalite, kapasite Windows PowerShell yo pi laj: nan yon seri atik kout nou pral eseye konnen ki jan solisyon an Microsoft diferan de zouti yo nou pi abitye avèk yo.

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle

Karakteristik prensipal la 

Natirèlman, Windows PowerShell se prensipalman yon kokiy kòmand ak yon langaj scripting, orijinèlman bati sou .NET Framework la epi pita sou .NET Nwayo a. Kontrèman ak kokiy ki aksepte epi retounen done tèks, Windows PowerShell travay ak klas .NET, ki gen pwopriyete ak metòd. PowerShell pèmèt ou kouri kòmandman komen epi tou li ba ou aksè a objè COM, WMI, ak ADSI. Li itilize depo divès kalite, tankou sistèm nan dosye oswa rejis la Windows, pou aksè nan ki sa yo rele an. founisè. Li se vo anyen posiblite pou entegre PowerShell konpozan ègzèkutabl nan lòt aplikasyon pou aplike operasyon divès kalite, enkli. atravè koòdone grafik. Ranvèse a se vre tou: anpil aplikasyon Windows bay aksè a koòdone jesyon yo atravè PowerShell. 

Windows PowerShell pèmèt ou:

  • Chanje anviwònman sistèm opere;
  • Jere sèvis ak pwosesis;
  • Konfigure wòl sèvè ak konpozan;
  • Enstale lojisyèl;
  • Jere lojisyèl enstale atravè koòdone espesyal;
  • Afiche eleman ègzekutabl nan pwogram twazyèm pati;
  • Kreye scripts pou otomatize travay administrasyon yo;
  • Travay ak sistèm dosye a, rejis Windows, magazen sètifika, elatriye.

Shell ak anviwònman devlopman

Windows PowerShell egziste sou de fòm: anplis emulateur konsole a ak yon kokiy lòd, gen yon anviwònman scripting entegre (ISE). Pou jwenn aksè nan koòdone liy lòd la, tou senpleman chwazi chemen kout ki apwopriye a nan meni Windows la oswa kouri powershell.exe nan meni an Kouri. Yon fenèt ble ap parèt sou ekran an, notables diferan nan kapasite nan cmd.exe antediluvian la. Gen autocompletion ak lòt karakteristik abitye itilizatè yo nan kokiy lòd pou sistèm Unix.

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle

Pou travay ak koki a ou bezwen sonje kèk rakoursi klavye:

  • Flèch yo monte ak desann defile nan istwa a pou repete kòmandman yo tape deja;
  • Flèch dwat la nan fen liy lan retype karaktè anvan an kòmandman pa karaktè;
  • Ctrl + Kay efase tèks tape a soti nan pozisyon kurseur nan kòmansman liy lan;
  • Ctrl+Fen efase tèks ki soti nan kurseur a nan fen liy lan.

F7 montre yon fenèt ak kòmandman yo antre epi li pèmèt ou chwazi youn nan yo. Konsole a travay tou pa chwazi tèks ak sourit la, kopye-kole, pozisyon kurseur, efase, backspace - tout sa nou renmen.

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle
Windows PowerShell ISE se yon anviwònman devlopman konplè ki gen yon editè kòd ki sipòte onglè ak maketing sentaks, yon designer kòmand, yon debogaj entegre, ak lòt plezi pwogramasyon. Si ou ekri yon tire apre non kòmandman an nan editè anviwònman devlopman an, ou pral resevwa tout paramèt ki disponib nan lis deroulant a, ki endike kalite a. Ou ka lanse PowerShell ISE swa atravè yon chemen kout nan meni sistèm lan oswa lè l sèvi avèk dosye ègzèkutabl powershell_ise.exe la.

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle

Cmdlets 

Nan Windows PowerShell, sa yo rele. cmdlets. Sa yo se klas espesyalize .NET ki bay yon varyete de fonctionnalités. Yo rele yo dapre prensip "Aksyon-Objè" (oswa "Vèb-Non, si w prefere), epi konjonktif ki separe ak tire sanble ak predikatè ak sijè nan fraz lang natirèl. Pou egzanp, Get-Help literalman vle di "Get-Help" oswa nan yon kontèks PowerShell: "Montre-Help". An reyalite, sa a se yon analogue nan kòmandman an man nan sistèm Unix, ak manyèl nan PowerShell bezwen yo dwe mande nan fason sa a, epi yo pa rele cmdlets ak kle a -help oswa /? .. Pa bliye sou dokiman an sou entènèt pou PowerShell: Microsoft gen li byen detaye.

Anplis Get, cmdlets tou itilize lòt vèb pou endike aksyon (epi pa sèlman vèb, entèdi). Nan lis ki anba a nou bay kèk egzanp:

Add - ajoute;
Clear - pwòp;
Enable - limen;
Disable - koupe;
New - kreye;
Remove - efase;
Set - mande;
Start - kouri;
Stop - sispann;
Export - ekspòtasyon;
Import - enpòte.

Gen sistèm, itilizatè ak cmdlets opsyonèl: kòm yon rezilta nan ekzekisyon, yo tout retounen yon objè oswa yon etalaj de objè. Yo pa ka sansib, i.e. Soti nan pwen de vi entèprèt kòmand la, pa gen okenn diferans ant Get-Help ak get-help. Se senbòl ';' yo itilize pou separasyon, men li nesesè sèlman si yo egzekite plizyè cmdlets sou yon sèl liy. 

Windows PowerShell cmdlets yo gwoupe nan modil (NetTCPIP, Hyper-V, elatriye), epi gen yon cmdlet Get-Command pou rechèch pa objè ak aksyon. Ou ka montre èd sou li tankou sa a:

Get-Help Get-Command

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle

Pa default, kòmandman an montre èd rapid, men paramèt (agiman) yo pase nan cmdlets jan sa nesesè. Avèk èd yo, ou ka, pou egzanp, jwenn èd detaye (-Detaye paramèt) oswa konplè (-Full), osi byen ke montre egzanp (-Egzanp paramèt):

Get-Help Get-Command -Examples

Èd nan Windows PowerShell mete ajou ak cmdlet Update-Help. Si yon liy kòmandman vin twò long, agiman cmdlet yo ka transfere nan pwochen an lè w ekri karaktè sèvis '`' epi peze Enter - tou senpleman fini ekri yon kòmandman sou yon liy epi kontinye sou yon lòt pa pral travay.

Anba a gen kèk egzanp cmdlets komen: 

Get-Process — montre pwosesis k ap kouri nan sistèm lan;
Get-Service — montre sèvis yo ak estati yo;
Get-Content — montre sa ki nan dosye a.

Pou cmdlets yo itilize souvan ak sèvis piblik ekstèn, Windows PowerShell gen sinonim kout - alyas. Pa egzanp, dir se yon alyas pou Get-ChildItem. Genyen tou analogue nan kòmandman ki soti nan sistèm Unix nan lis la nan sinonim (ls, ps, elatriye), epi yo rele cmdlet Get-Help pa lòd la èd. Ou ka wè lis konplè sinonim yo lè l sèvi avèk cmdlet Get-Alias ​​​​:

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle

Scripts PowerShell, Fonksyon, Modil, ak Lang

Scripts Windows PowerShell yo estoke kòm dosye tèks klè ak yon ekstansyon .ps1. Ou pa ka kouri yo pa double-klike: ou bezwen klike sou dwa pou ouvri meni an kontèks epi chwazi "Kouri nan PowerShell". Soti nan konsole a ou pral swa gen yo presize chemen an konplè nan script la, oswa ale nan anyè ki apwopriye a epi ekri non an fichye. Kouri scripts yo limite tou pa règleman sistèm, epi pou tcheke paramèt aktyèl yo ou ka itilize cmdlet Get-ExecutionPolicy, ki pral retounen youn nan valè sa yo:

Restricted — kouri scripts entèdi (pa default);
AllSigned — se sèlman scripts ki siyen pa yon pwomotè ou fè konfyans yo gen dwa kouri;
RemoteSigned - Pèmèt yo kouri siyen ak pwòp Scripts;
Unrestricted - Pèmèt yo kouri nenpòt scripts.

Administratè a gen de opsyon. Ki pi an sekirite a enplike siyen scripts, men sa a se byen yon maji grav - nou pral fè fas ak li nan atik sa yo. Koulye a, ann pran chemen pi piti rezistans epi chanje politik la:

Set-ExecutionPolicy RemoteSigned

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle
Pou fè sa, w ap oblije kouri PowerShell kòm yon administratè, byenke ou ka itilize yon paramèt espesyal pou chanje règleman pou itilizatè aktyèl la.

Scripts yo ekri nan yon langaj pwogramasyon oryante objè, kòmandman yo nonmen dapre menm prensip ak cmdlets yo te diskite deja: "Aksyon-Objè" ("Vèb-Non"). Objektif prensipal li se otomatize travay administrasyon yo, men li se yon lang entèprete konplè ki gen tout konstriksyon ki nesesè yo: so kondisyonèl, bouk, varyab, etalaj, objè, manyen erè, elatriye. Nenpòt editè tèks apwopriye pou ekri scripts, men li pi bon pou kouri Windows PowerShell ISE.

Ou ka pase paramèt nan script la, fè yo obligatwa, epi tou li mete valè default. Windows PowerShell tou pèmèt ou kreye ak rele fonksyon menm jan ak cmdlets, lè l sèvi avèk konstriksyon an Fonksyon ak aparèy òtopedik boukle. Yon script ki gen fonksyon yo rele yon modil epi li gen yon ekstansyon .psm1. Modil yo dwe estoke nan anyè ki defini nan varyab anviwònman PowerShell. Ou ka wè yo lè l sèvi avèk lòd sa a:

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

Transporteurs

Nan dènye egzanp lan, nou te itilize yon konsepsyon abitye itilizatè yo nan kokiy Unix. Nan Windows PowerShell, ba vètikal la tou pèmèt ou pase pwodiksyon an nan yon kòmandman nan opinyon yon lòt, men gen yon diferans enpòtan nan aplikasyon an nan tiyo a: nou pa pale ankò sou yon seri karaktè oswa kèk tèks. Bati-an cmdlets oswa fonksyon itilizatè-defini retounen objè oswa etalaj nan objè, epi yo ka resevwa yo tou kòm opinyon. Tankou kokiy Bourne la ak anpil siksesè li yo, PowerShell sèvi ak yon tiyo pou senplifye travay konplèks.

Egzanp ki pi senp nan yon tiyo sanble sa a:

Get-Service | Sort-Object -property Status

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle
Se cmdlet Get-Service la egzekite an premye, epi answit tout sèvis li resevwa yo pase nan cmdlet Sort-Object pou klasman pa pwopriyete Status la. Ki agiman rezilta a nan seksyon anvan an nan tiyo a pase depann sou kalite li yo - anjeneral li se InputObject. Pwoblèm sa a pral diskite an plis detay nan yon atik dedye a langaj pwogramasyon PowerShell la. 

Si ou vle, ou ka kontinye chèn lan epi pase rezilta Sort-Object nan yon lòt cmdlet (yo pral egzekite de goch a dwat). By wout la, itilizatè Windows yo gen aksè a konsepsyon abitye ak tout Unixoids pou pwodiksyon paj pa paj: 

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

Kouri travay nan background nan 

Byen souvan li nesesè kouri yon lòd sèten nan background nan pou yo pa rete tann pou rezilta a nan ekzekisyon li nan sesyon an koki. Windows PowerShell gen plizyè cmdlets pou sitiyasyon sa a:

Start-Job — lanse yon travay background;
Stop-Job — sispann yon travay background;
Get-Job — gade lis travay background yo;
Receive-Job — gade rezilta yon travay background;
Remove-Job — efase yon travay background;
Wait-Job — transfere travay la background tounen nan konsole a.

Pou kòmanse yon travay background, nou itilize cmdlet Start-Job la epi presize yon kòmandman oswa yon seri kòmandman nan atèl boukle:

Start-Job {Get-Service}

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle
Travay background nan Windows PowerShell ka manipile lè w konnen non yo. Premyèman, ann aprann kijan pou montre yo:

Get-Job

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle
Koulye a, ann montre rezilta Job1:

Receive-Job Job1 | more

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle
Li byen senp.

Egzekisyon lòd adistans

Windows PowerShell pèmèt ou kouri kòmandman ak scripts pa sèlman lokalman, men tou sou yon òdinatè aleka e menm sou yon gwoup antye nan machin. Gen plizyè fason pou fè sa:

  • Anpil cmdlets gen yon paramèt -ComputerName, men nan fason sa a li pa pral posib, pou egzanp, yo kreye yon CONVEYOR;
  • Kòmandle Enter-PSSession pèmèt ou kreye yon sesyon entèaktif sou yon machin aleka; 
  • Sèvi ak yon cmdlet Invoke-Command Ou ka kouri kòmandman oswa scripts sou youn oswa plizyè òdinatè aleka.

PowerShell vèsyon

Depi premye lage li an 2006, PowerShell te chanje anpil. Zouti a disponib pou anpil sistèm kap kouri sou platfòm pyès ki nan konpitè diferan (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 ak OS X. Dènye lage 6.2 te pibliye 10 janvye 2018. Scripts ekri pou vèsyon pi bonè yo gen anpil chans pou yo travay nan pita yo, men pwoblèm yo ka leve ak yon transfè ranvèse, depi sou ane yo nan devlopman, yon gwo kantite nouvo cmdlets te parèt nan PowerShell. Ou ka jwenn vèsyon an nan koki kòmand ki enstale sou òdinatè w lan lè l sèvi avèk pwopriyete PSVersion nan $PSVersionTable bati-an varyab la:

$PSVersionTable.PSVersion

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle
Ou kapab tou itilize cmdlet la:

Get-Variable -Name PSVersionTable –ValueOnly

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle
Menm bagay la ka fè lè l sèvi avèk cmdlet Get-Host la. An reyalite, gen anpil opsyon, men pou itilize yo ou bezwen aprann langaj pwogramasyon PowerShell, ki se sa nou pral fè nan pwochen atik

Rezilta 

Microsoft te jere yo kreye yon kokiy kòmand vrèman pwisan ak yon anviwònman pratik entegre pou devlope scripts. Ki sa ki fè distenksyon li ak zouti nou abitye ak nan mond lan Unix se entegrasyon pwofon li yo ak sistèm opere nan fanmi Windows, osi byen ke ak lojisyèl pou yo ak platfòm la .NET Core. Yo ka rele PowerShell yon kokiy oryante objè paske cmdlets ak fonksyon itilizatè defini retounen objè oswa etalaj objè epi yo ka resevwa yo kòm opinyon. Nou panse ke tout administratè Windows sèvè ta dwe posede zouti sa a: tan an te pase lè yo te kapab fè san liy lòd la. Yon kokiy konsole avanse espesyalman nesesè sou VPS pri ki ba nou an kouri Windows Server Core, men sa se yon istwa konplètman diferan.

Ki sa ki Windows PowerShell ak kisa li manje? Pati 1: Karakteristik kle

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Ki sijè yo ta dwe adrese an premye nan pwochen atik yo nan seri a?

  • 53,2%Pwogramasyon nan PowerShell123

  • 42,4%PowerShell98 Fonksyon ak modil

  • 22,1%Ki jan yo siyen pwòp script ou yo?51

  • 12,1%Travay ak depo atravè founisè28

  • 57,6%Otomatik administrasyon òdinatè lè l sèvi avèk PowerShell133

  • 30,7%Jere lojisyèl ak entegre ègzèkutabl PowerShell nan pwodwi twazyèm pati71

231 itilizatè yo te vote. 37 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè