Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak

Historikoki, komando-lerroko utilitateak Unix sistemetan Windows-en baino hobeto garatu dira, baina irtenbide berri baten agerpenarekin egoera aldatu egin da.

Windows PowerShell-ek sistema-administratzaileei ohiko zeregin gehienak automatizatzeko aukera ematen die. Haren laguntzarekin, ezarpenak alda ditzakezu, zerbitzuak gelditu eta abiarazi eta instalatutako aplikazio gehienen mantentze-lanak ere egin ditzakezu. Okerra litzateke leiho urdina beste komando interpretatzaile bat bezala hautematea. Ikuspegi honek ez du islatzen Microsoft-ek proposatutako berrikuntzen funtsa. Izan ere, Windows PowerShell-en gaitasunak askoz zabalagoak dira: artikulu sorta labur batean Microsoften irtenbidea ezagutzen ditugun tresnetatik nola desberdintzen den azaltzen saiatuko gara.

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak

Funtsezko ezaugarriak 

Jakina, Windows PowerShell script-lengoaia duen komando-shell bat da batez ere, jatorriz .NET Framework-en eta geroago .NET Core-n eraikia. Testu-datuak onartzen eta itzultzen dituzten shell-ek ez bezala, Windows PowerShell-ek .NET klaseekin funtzionatzen du, propietateak eta metodoak dituztenak. PowerShell-ek komando arruntak exekutatzeko aukera ematen dizu eta COM, WMI eta ADSI objektuetarako sarbidea ere ematen dizu. Hainbat biltegiratze erabiltzen ditu, hala nola, fitxategi-sistema edo Windows-eko erregistroa, deiturikoak sartzeko. hornitzaileak. Aipatzekoa da PowerShell osagai exekutagarriak beste aplikazio batzuetan txertatzeko aukera hainbat eragiketa ezartzeko, barne. interfaze grafikoaren bidez. Alderantziz ere gertatzen da: Windows aplikazio askok beren kudeaketa interfazeetarako sarbidea ematen dute PowerShell bidez. 

Windows PowerShellek aukera ematen dizu:

  • Aldatu sistema eragilearen ezarpenak;
  • Zerbitzuak eta prozesuak kudeatu;
  • Zerbitzariaren rolak eta osagaiak konfiguratu;
  • Softwarea instalatu;
  • Kudeatu instalatutako softwarea interfaze berezien bidez;
  • Txertatu osagai exekutagarriak hirugarrenen programetan;
  • Sortu script-ak administrazio-zereginak automatizatzeko;
  • Fitxategi-sistemarekin, Windows-eko erregistroarekin, ziurtagiri-biltegiarekin, etab.

Shell eta garapen ingurunea

Windows PowerShell bi formatan dago: komando shell bat duen kontsola emuladoreaz gain, scripting ingurune integratua (ISE) dago. Komando-lerroko interfazera sartzeko, besterik gabe, hautatu lasterbide egokia Windows menutik edo exekutatu powershell.exe Exekutatu menutik. Pantailan leiho urdin bat agertuko da, antediluvian cmd.exe-ren gaitasunetan nabarmen desberdina. Osaketa automatikoa eta beste ezaugarri batzuk daude Unix sistemetarako komando-shellen erabiltzaileentzat.

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak

Shell-arekin lan egiteko, teklatuko lasterbide batzuk gogoratu behar dituzu:

  • Gora eta behera geziak historian zehar mugitzen dira aurretik idatzitako komandoak errepikatzeko;
  • Lerro baten amaierako eskuineko geziak aurreko komandoa karakterez karaktere berriro idazten du;
  • Ktrl+Home idatzitako testua ezabatzen du kurtsorearen posiziotik lerroaren hasieraraino;
  • Ktrl+Amaiera testua ezabatzen du kurtsoretik lerroaren amaieraraino.

F7-k leiho bat erakusten du sartutako komandoekin eta horietako bat hautatzeko aukera ematen du. Kontsolak saguarekin testua hautatuz, kopiatu-itsatsi, kurtsorea kokatzea, ezabatzea, atzera eginda ere funtzionatzen du - maite dugun guztia.

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak
Windows PowerShell ISE garapen-ingurune oso bat da, fitxak eta sintaxia nabarmentzea onartzen duen kode-editorea, komando-diseinatzailea, arazte integratua eta beste programazio-goza batzuk. Komandoaren izenaren ondoren marratxo bat idazten baduzu garapen-inguruneko editorean, eskuragarri dauden parametro guztiak jasoko dituzu goitibeherako zerrendan, mota adieraziz. PowerShell ISE abiarazi dezakezu sistemaren menuko lasterbide baten bidez edo powershell_ise.exe fitxategi exekutagarria erabiliz.

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak

Cmdletak 

Windows PowerShell-en, deitzen dena. cmdlet-ak. Hauek .NET klase espezializatuak dira, hainbat funtzionaltasun eskaintzen dituztenak. “Ekintza-Objektua” printzipioaren arabera izendatzen dira (edo “Aditza-Izena, nahiago baduzu), eta marratxoz bereizitako lokailuak hizkuntza naturaleko perpausetako predikatuaren eta subjektuaren antza du. Adibidez, Get-Help hitzez hitz "Get-Help" edo PowerShell testuinguru batean esan nahi du: "Show-Help". Izan ere, hau Unix sistemetako man komandoaren analogoa da, eta PowerShell-en eskuliburuak horrela eskatu behar dira, eta ez cmdlet-ak deituz –help edo /? teklarekin. Ez ahaztu lineako dokumentazioaz. PowerShell: Microsoft-ek nahiko zehatza du.

Lortu-z gain, cmdlet-ek beste aditz batzuk ere erabiltzen dituzte ekintzak adierazteko (eta ez aditzak bakarrik, hertsiki esanda). Beheko zerrendan adibide batzuk ematen ditugu:

Add - gehitu;
Clear - garbitu;
Enable - piztu;
Disable - itzali;
New - sortu;
Remove - ezabatu;
Set - galdetu;
Start - Korrika egin;
Stop - gelditu;
Export - esportazioa;
Import - inportatu.

Sistema, erabiltzaile eta aukerako cmdlet-ak daude: exekuzioaren ondorioz, guztiek objektu bat edo objektu-matrize bat itzultzen dute. Ez dira maiuskulak eta minuskulak bereizten, hau da. Komando-interpretatzailearen ikuspuntutik, ez dago desberdintasunik Get-Help eta get-help artean. ';' ikurra bereizteko erabiltzen da, baina lerro batean hainbat cmdlet exekutatzen badira bakarrik beharrezkoa da. 

Windows PowerShell cmdlet-ak moduluetan multzokatzen dira (NetTCPIP, Hyper-V, etab.), eta Get-Command cmdlet bat dago objektuaren eta ekintzaren arabera bilatzeko. Honelako laguntza erakutsi dezakezu:

Get-Help Get-Command

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak

Lehenespenez, komandoak laguntza azkarra bistaratzen du, baina parametroak (argumentuak) cmdlet-etara pasatzen dira beharren arabera. Haien laguntzarekin, adibidez, laguntza zehatza (-Detailed parameter) edo osoa (-Full) lor dezakezu, baita adibideak bistaratu (-Examples parametroa):

Get-Help Get-Command -Examples

Windows PowerShell-en laguntza Update-Help cmdlet-arekin eguneratzen da. Komando-lerro bat luzeegia iruditzen bazaio, cmdlet argumentuak hurrengora transferi daitezke zerbitzu-karakterea idatziz '`' eta Sartu sakatuz - komando bat lerro batean idazten amaitzea eta beste batean jarraitzea ez da funtzionatuko.

Jarraian, cmdlet arrunten adibide batzuk daude: 

Get-Process — sisteman martxan dauden prozesuak erakutsi;
Get-Service — zerbitzuak eta haien egoera erakutsi;
Get-Content — bistaratu fitxategiaren edukia.

Maiz erabiltzen diren cmdlet eta kanpoko utilitateetarako, Windows PowerShell-ek sinonimo laburrak ditu - aliasak. Adibidez, dir Get-ChildItem-en ezizena da. Sinonimoen zerrendan Unix sistemetako komandoen analogoak ere badaude (ls, ps, etab.), eta Get-Help cmdlet-a help komandoak deitzen du. Sinonimoen zerrenda osoa Get-Alias ​​​​cmdlet-a erabiliz ikus daiteke:

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak

PowerShell scriptak, funtzioak, moduluak eta hizkuntza

Windows PowerShell scriptak testu arrunteko fitxategi gisa gordetzen dira .ps1 luzapenarekin. Ezin dituzu exekutatu klik bikoitza eginez: eskuineko botoiarekin klik egin behar duzu testuinguru-menua irekitzeko eta hautatu "Exekutatu PowerShell-en". Kontsolatik script-erako bide osoa zehaztu beharko duzu, edo dagokion direktoriora joan eta fitxategiaren izena idatzi. Scriptak exekutatzea sistemaren politikak ere mugatzen du, eta uneko ezarpenak egiaztatzeko Get-ExecutionPolicy cmdlet-a erabil dezakezu, balio hauetako bat itzuliko duena:

Restricted — scriptak exekutatzen debekatuta dago (lehenespenez);
AllSigned — Garatzaile fidagarri batek sinatutako script-ak bakarrik exekutatzen dira;
RemoteSigned - Sinatutako eta script propioak exekutatzeko baimena;
Unrestricted - Edozein script exekutatzeko baimena.

Administratzaileak bi aukera ditu. Seguruena gidoiak sinatzea dakar, baina hau nahiko sorginkeria larria da - hurrengo artikuluetan landuko dugu. Har dezagun orain erresistentzia txikienaren bidea eta alda dezagun politika:

Set-ExecutionPolicy RemoteSigned

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak
Horretarako, PowerShell administratzaile gisa exekutatu beharko duzu, nahiz eta parametro berezi bat erabil dezakezun uneko erabiltzailearen politika aldatzeko.

Scriptak objektuetara zuzendutako programazio-lengoaia batean idazten dira, eta horien komandoak aurretik eztabaidatutako cmdlet-en printzipio beraren arabera izendatzen dira: "Action-Object" ("Aditza-Izena"). Bere helburu nagusia administrazio-zereginak automatizatzea da, baina interpretazio-lengoaia oso bat da, beharrezko eraikuntza guztiak dituena: baldintza-jauzia, begiztak, aldagaiak, arrayak, objektuak, akatsen kudeaketa, etab. Edozein testu-editore egokia da script-ak idazteko, baina erosoena da Windows PowerShell ISE exekutatzea.

Parametroak pasa ditzakezu script-era, derrigorrezko bihurtu eta balio lehenetsiak ere ezarri. Windows PowerShell-ek funtzioak sortu eta deitzeko aukera ematen du cmdlet-en modu berean, Function eraikuntza eta giltza kizkur erabiliz. Funtzioak dituen script bati modulu deitzen zaio eta .psm1 luzapena du. Moduluak PowerShell ingurune-aldagaietan definitutako direktorioetan gorde behar dira. Komando hau erabiliz ikus ditzakezu:

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

Zinta

Azken adibidean, Unix shell-en erabiltzaileek ezagutzen duten diseinua erabili dugu. Windows PowerShell-en, barra bertikalak komando baten irteera beste baten sarrerara pasatzeko aukera ere ematen du, baina kanalizazioaren ezarpenean alde nabarmena dago: jada ez gara karaktere multzo bati buruz edo testu batzuei buruz ari. Cmdlet integratuak edo erabiltzaileak definitutako funtzioek objektuak edo objektu-matrizeak itzultzen dituzte, eta sarrera gisa ere jaso ditzakete. Bourne shell-a eta bere ondorengo asko bezala, PowerShell-ek kanalizazio bat erabiltzen du zeregin konplexuak errazteko.

Kanalizazio baten adibiderik errazena honelakoa da:

Get-Service | Sort-Object -property Status

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak
Get-Service cmdlet-a exekutatzen da lehenik, eta, ondoren, jasotzen dituen zerbitzu guztiak Sort-Object cmdlet-era pasatzen dira, Status propietatearen arabera ordenatzeko. Gailuaren aurreko ataleko emaitza zein argumentutara pasatzen den bere motaren araberakoa da - normalean InputObject da. Gai hau zehatzago eztabaidatuko da PowerShell programazio-lengoaiari eskainitako artikulu batean. 

Nahi izanez gero, katearekin jarraitu eta Sort-Object-en emaitza beste cmdlet batera pasa dezakezu (ezkerretik eskuinera exekutatuko dira). Bide batez, Windows-eko erabiltzaileek Unixoid guztiek ezagutzen duten diseinurako sarbidea ere badute orrialdez orrialdeko irteerarako: 

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

Zereginak exekutatzen atzeko planoan 

Askotan beharrezkoa da komando jakin bat atzeko planoan exekutatu, shell saioan exekuzioaren emaitzaren zain egon ez dadin. Windows PowerShell-ek hainbat cmdlet ditu egoera honetarako:

Start-Job — atzeko plano bat abiarazi;
Stop-Job — atzeko planoko zeregin bat gelditzea;
Get-Job — atzeko planoko zereginen zerrenda ikustea;
Receive-Job — atzeko planoko zeregin baten emaitza ikustea;
Remove-Job — atzeko planoko zeregin bat ezabatzea;
Wait-Job — atzeko planoko zeregina berriro kontsolara transferitzea.

Atzeko planoko zeregin bat hasteko, Start-Job cmdlet-a erabiltzen dugu eta komando bat edo komando multzo bat giltza kizkur artean zehaztuko dugu:

Start-Job {Get-Service}

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak
Windows PowerShell-en atzeko planoko zereginak haien izenak ezagututa manipula daitezke. Lehenik eta behin, ikas dezagun nola bistaratzen diren:

Get-Job

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak
Orain erakutsi dezagun Job1-ren emaitza:

Receive-Job Job1 | more

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak
Nahiko sinplea da.

Urruneko komandoen exekuzioa

Windows PowerShell-ek komandoak eta script-ak lokalean ez ezik, urruneko ordenagailu batean eta makina talde oso batean ere exekutatzeko aukera ematen du. Horretarako hainbat modu daude:

  • Cmdlet askok parametro bat dute -ComputerName, baina horrela ezin izango da, adibidez, garraiatzailerik sortu;
  • Cmdlet Enter-PSSession urruneko makina batean saio interaktibo bat sortzeko aukera ematen du; 
  • Cmdlet bat erabiliz Invoke-Command Komandoak edo scriptak exekutatu ditzakezu urruneko ordenagailu batean edo gehiagotan.

PowerShell bertsioak

2006an argitaratu zuen lehen bertsiotik, PowerShell asko aldatu da. Tresna hardware-plataforma ezberdinetan exekutatzen ari diren sistema askotan dago eskuragarri (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 eta OS X. Azken bertsioa 6.2 10ko urtarrilaren 2018ean kaleratu zen. Litekeena da aurreko bertsioetarako idatzitako scriptek gerokoetan funtzionatzea, baina alderantzizko transferentziarekin arazoak sor daitezke, garapen urteetan zehar cmdlet berri ugari agertu baitira PowerShell-en. Zure ordenagailuan instalatutako komando-shellaren bertsioa aurki dezakezu $PSVersionTable barneko aldagaiaren PSVersion propietatea erabiliz:

$PSVersionTable.PSVersion

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak
Cmdlet-a ere erabil dezakezu:

Get-Variable -Name PSVersionTable –ValueOnly

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak
Gauza bera egin daiteke Get-Host cmdlet-a erabiliz. Izan ere, aukera asko daude, baina horiek erabiltzeko PowerShell programazio lengoaia ikasi behar da, eta horixe izango da. hurrengo artikulua

Emaitzak 

Microsoft-ek komando-shell benetan indartsua sortzea lortu du script-ak garatzeko ingurune integratu eroso batekin. Unix munduan ezagutzen ditugun tresnetatik bereizten duena Windows familiako sistema eragileekin integrazio sakona da, baita haientzako softwarearekin eta .NET Core plataformarekin ere. PowerShell objektuetara zuzendutako shell dei daiteke, cmdlet-ek eta erabiltzaileek definitutako funtzioek objektuak edo objektu-matrizeak itzultzen dituztelako eta sarrera gisa jaso ditzaketelako. Uste dugu Windows zerbitzariko administratzaile guztiek tresna honen jabe izan beharko luketela: komando-lerrorik gabe egin zezaketen denbora igaro da. Batez ere beharrezkoa da kontsola shell aurreratua gure kostu baxuko VPS Windows Server Core exekutatzen duena, baina hori guztiz bestelako istorio bat da.

Zer da Windows PowerShell eta zerekin jaten da? 1. zatia: Ezaugarri nagusiak

Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.

Zein gai jorratu behar dira lehenengo serieko hurrengo artikuluetan?

  • 53,2%Programazioa PowerShell123-n

  • 42,4%PowerShell98 Funtzioak eta Moduluak

  • 22,1%Nola sinatu zure gidoiak?51

  • 12,1%Biltegiratzeekin hornitzaileen bidez lan egitea28

  • 57,6%Automatizatu ordenagailuen administrazioa PowerShell133 erabiliz

  • 30,7%Softwarea kudeatzea eta PowerShell exekutagarriak hirugarrenen produktuetan txertatzea71

231 erabiltzailek eman dute botoa. 37 erabiltzaile abstenitu ziren.

Iturria: www.habr.com

Gehitu iruzkin berria