Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau

Històricament, les utilitats de línia d'ordres als sistemes Unix estan millor desenvolupades que a Windows, però amb l'arribada d'una nova solució, la situació ha canviat.

Windows PowerShell permet als administradors del sistema automatitzar la majoria de les tasques rutinàries. Amb ell, podeu canviar la configuració, aturar i iniciar serveis, i també fer el manteniment de la majoria d'aplicacions instal·lades. Seria incorrecte percebre la finestra blava com un altre intèrpret d'ordres. Aquest enfocament no reflecteix l'essència de les innovacions proposades per Microsoft. De fet, les possibilitats de Windows PowerShell són molt més àmplies: en una breu sèrie d'articles, intentarem esbrinar com es diferencia la solució de Microsoft de les eines que estem més familiaritzats.

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau

Característiques clau 

Per descomptat, Windows PowerShell és principalment un intèrpret d'ordres de programació, construït originalment a .NET Framework i més tard a .NET Core. A diferència dels shells que accepten i retornen dades de text, Windows PowerShell funciona amb classes .NET que tenen propietats i mètodes. PowerShell us permet executar ordres comunes i també us dóna accés a objectes COM, WMI i ADSI. Utilitza diversos emmagatzematges, com ara el sistema de fitxers o el registre de Windows, per accedir als quals s'anomena. proveïdors. Val la pena destacar la possibilitat d'incrustar components executables de PowerShell en altres aplicacions per implementar diverses operacions, incl. mitjançant una interfície gràfica. El contrari també és cert: moltes aplicacions de Windows proporcionen accés a les seves interfícies de gestió mitjançant PowerShell. 

Windows PowerShell us permet:

  • Canviar la configuració del sistema operatiu;
  • Gestionar serveis i processos;
  • Configura els rols i components del servidor;
  • instal·lar programari;
  • Gestionar el programari instal·lat mitjançant interfícies especials;
  • Incrustar components executables en programes de tercers;
  • Crear scripts per automatitzar les tasques d'administració;
  • Treballeu amb el sistema de fitxers, el registre de Windows, el magatzem de certificats, etc.

Shell i entorn de desenvolupament

Hi ha Windows PowerShell de dues formes: a més de l'emulador de consola amb un intèrpret d'ordres, hi ha un entorn de scripting integrat (ISE). Per accedir a la interfície de línia d'ordres, només cal que seleccioneu la drecera adequada al menú de Windows o executeu powershell.exe des del menú Executar. Apareixerà una finestra blava a la pantalla, notablement diferent en capacitats del cmd.exe antediluvià. Hi ha l'autocompleció i altres funcions familiars per als usuaris d'intèrprets d'ordres per a sistemes Unix.

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau

Per treballar amb l'intèrpret d'ordres, heu de recordar algunes dreceres de teclat:

  • Les fletxes amunt i avall es desplacen per l'historial per repetir les ordres escrites anteriorment;
  • La fletxa dreta al final d'una línia torna a escriure l'ordre anterior caràcter per caràcter;
  • Ctrl+Inici elimina el text escrit des de la posició del cursor fins al començament de la línia;
  • Ctrl+Final suprimeix el text des del cursor fins al final de la línia.

F7 mostra una finestra amb les ordres escrites i us permet seleccionar una d'elles. La consola també funciona amb la selecció de text amb el ratolí, copiar-enganxar, posicionar el cursor, esborrar, retrocedir, tot el que ens agrada.

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau
Windows PowerShell ISE és un entorn de desenvolupament complet amb un editor de codi amb pestanyes i sintaxis destacat, creador d'ordres, depurador integrat i altres plaers de programació. Si escriviu un guionet després del nom de l'ordre a l'editor de l'entorn de desenvolupament, obtindreu totes les opcions disponibles a la llista desplegable amb una indicació del tipus. Podeu iniciar PowerShell ISE mitjançant una drecera des del menú del sistema o mitjançant el fitxer executable powershell_ise.exe.

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau

Cmdlets 

A Windows PowerShell, l'anomenat. cmdlets. Es tracta de classes .NET especialitzades que proporcionen una varietat de funcionalitats. S'anomenen Acció-Objecte (o Verb-Substantiu, si ho prefereixes), i la còpula separada per guionet s'assembla al predicat i subjecte en oracions de llenguatge natural. Per exemple, Get-Help significa literalment "Get-Help", o en un context de PowerShell: "Show-Help". De fet, això és un anàleg de l'ordre man als sistemes Unix, i els manuals a PowerShell s'han de sol·licitar d'aquesta manera, i no cridant cmdlets amb la tecla --help o /?. No oblideu la documentació en línia de PowerShell: Microsoft ho té força detallat.

A més d'Obtenir, els cmdlets utilitzen altres verbs per indicar accions (i no només verbs, en sentit estricte). A la llista següent donem alguns exemples:

Add - afegir;
Clear - clar;
Enable - encendre;
Disable - apagar;
New - crear;
Remove - esborrar;
Set - preguntar;
Start - correr;
Stop - Atura;
Export - exportació;
Import - importació.

Hi ha cmdlets de sistema, d'usuari i opcionals: com a resultat de l'execució, tots retornen un objecte o una matriu d'objectes. No distingeixen entre majúscules i minúscules, és a dir. des del punt de vista de l'intèrpret d'ordres, no hi ha cap diferència entre Get-Help i get-help. El caràcter ';' s'utilitza per a la separació, però és obligatori posar-lo només si s'executen diversos cmdlets a la mateixa línia. 

Els cmdlets de Windows PowerShell s'agrupen en mòduls (NetTCPIP, Hyper-V, etc.) i hi ha un cmdlet Get-Command per cercar per objecte i acció. Podeu mostrar l'ajuda com aquesta:

Get-Help Get-Command

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau

Per defecte, l'ordre mostra una breu ajuda, però els paràmetres (arguments) es passen als cmdlets segons sigui necessari. Amb la seva ajuda, podeu, per exemple, obtenir ajuda detallada (paràmetre -Detailed) o completa (paràmetre -Complet), així com mostrar exemples (paràmetre -Examples):

Get-Help Get-Command -Examples

L'ajuda a Windows PowerShell s'actualitza mitjançant el cmdlet Update-Help. Si la línia d'ordres resulta massa llarga, els arguments del cmdlet es poden moure al següent escrivint el caràcter de servei '`' i prement Retorn; només acabar d'escriure l'ordre en una línia i continuar en una altra no funcionarà.

Aquests són alguns exemples de cmdlets comuns: 

Get-Process - mostrar els processos en execució al sistema;
Get-Service — Mostra els serveis i el seu estat;
Get-Content - Mostra el contingut del fitxer.

Per als cmdlets i les utilitats externes d'ús freqüent, Windows PowerShell té sinònims curts: àlies (de l'anglès. Alias). Per exemple, dir és un àlies per a Get-ChildItem. La llista de sinònims també inclou anàlegs d'ordres dels sistemes Unix (ls, ps, etc.), i el cmdlet Get-Help és cridat per l'ordre help. Es pot veure una llista completa de sinònims mitjançant el cmdlet Get-Alias ​​​​:

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau

Scripts, funcions, mòduls i el llenguatge PowerShell

Els scripts de Windows PowerShell s'emmagatzemen com a fitxers de text sense format amb una extensió .ps1. No els podeu iniciar fent doble clic: heu de fer clic amb el botó dret per obrir el menú contextual i seleccionar l'element "Executar a PowerShell". Des de la consola, haureu d'especificar el camí complet a l'script, o bé anar al directori adequat i escriure el nom del fitxer. L'execució de scripts també està limitada per la política del sistema i, per comprovar la configuració actual, podeu utilitzar el cmdlet Get-ExecutionPolicy, que retornarà un dels valors següents:

Restricted — el llançament de scripts està desactivat (per defecte);
AllSigned - només es permet el llançament d'scripts signats per un desenvolupador de confiança;
RemoteSigned - autoritzat a executar scripts signats i propis;
Unrestricted - Permès executar qualsevol script.

L'administrador té dues opcions. El més segur consisteix a signar scripts, però això és una bruixeria força seriosa: en tractarem en propers articles. Ara prenem el camí de menys resistència i canviem la política:

Set-ExecutionPolicy RemoteSigned

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau
Per fer-ho, caldrà executar PowerShell com a administrador, tot i que podeu canviar la política de l'usuari actual amb una configuració especial.

Els scripts s'escriuen en un llenguatge de programació orientat a objectes, les ordres del qual s'anomenen segons el mateix principi que els cmdlets comentats anteriorment: "Acció-Objecte" ("Verb-Nom"). La seva finalitat principal és automatitzar les tasques administratives, però és un llenguatge interpretat de ple dret que disposa de tots els constructes necessaris: salt condicional, bucles, variables, matrius, objectes, tractament d'errors, etc. Qualsevol editor de text està bé per fer scripts, però el millor és executar Windows PowerShell ISE.

Podeu passar paràmetres a l'script, fer-los necessaris i establir valors predeterminats. A més, Windows PowerShell us permet crear i cridar funcions de la mateixa manera que els cmdlets, mitjançant la construcció Function i les claus. Un script amb funcions s'anomena mòdul i té una extensió .psm1. Els mòduls s'han d'emmagatzemar en directoris definits a les variables d'entorn de PowerShell. Podeu veure'ls amb l'ordre següent:

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

Transportadors

En l'últim exemple, hem utilitzat una construcció que és familiar per als usuaris de l'intèrpret d'ordres Unix. A Windows PowerShell, la barra vertical també permet passar la sortida d'una ordre a l'entrada d'una altra, però hi ha una diferència significativa en la implementació de la canalització: ja no parlem d'un conjunt de caràcters o d'algun tipus de text. Els cmdlets integrats o les funcions definides per l'usuari retornen objectes o matrius d'objectes i també poden rebre'ls com a entrada. Igual que el shell Bourne i els seus nombrosos successors, PowerShell facilita les tasques complexes amb un pipeline.

L'exemple de pipeline més senzill és el següent:

Get-Service | Sort-Object -property Status

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau
Primer, s'executa el cmdlet Get-Service i, a continuació, tots els serveis rebuts es passen al cmdlet Sort-Object per ordenar-los per la propietat Status. A quin argument es passa el resultat de la secció anterior de la canalització depèn del seu tipus, normalment és InputObject. Aquest problema es tractarà amb més detall en un article dedicat al llenguatge de programació PowerShell. 

Si ho desitgeu, podeu continuar la cadena i passar el resultat de l'operació Sort-Object a un altre cmdlet (s'executaran d'esquerra a dreta). Per cert, els usuaris de Windows també tenen accés a la construcció per a la paginació familiar a tots els Unixoids: 

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

Execució de tasques en segon pla 

Molt sovint, cal executar una determinada ordre en segon pla, per no esperar el resultat de la seva execució a la sessió de l'intèrpret d'ordres. Windows PowerShell té diversos cmdlets per a aquest cas:

Start-Job - llançament d'una tasca de fons;
Stop-Job — aturar la tasca en segon pla;
Get-Job — veure la llista de tasques de fons;
Receive-Job — veure el resultat de l'execució de la tasca en segon pla;
Remove-Job — suprimir una tasca en segon pla;
Wait-Job - transferir la tasca de fons a la consola.

Per iniciar una tasca en segon pla, utilitzem el cmdlet Start-Job i especifiquem una ordre o un conjunt d'ordres entre claus:

Start-Job {Get-Service}

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau
Les tasques de fons a Windows PowerShell es poden manipular coneixent els seus noms. Primer, aprenem a mostrar-los:

Get-Job

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau
Ara mostrem el resultat de la feina Job1:

Receive-Job Job1 | more

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau
Tot és bastant senzill.

Execució de comandaments remots

Windows PowerShell us permet executar ordres i scripts no només a l'ordinador local, sinó també en un ordinador remot, i fins i tot en un grup sencer de màquines. Hi ha diverses maneres de fer-ho:

  • Molts cmdlets tenen un paràmetre -ComputerName, però d'aquesta manera no funcionarà, per exemple, per crear una cinta transportadora;
  • Cmdlet Enter-PSSession permet crear una sessió interactiva en una màquina remota; 
  • Utilitzant el cmdlet Invoke-Command podeu executar ordres o scripts en un o més ordinadors remots.

Versions de PowerShell

PowerShell ha canviat molt des del seu primer llançament el 2006. L'eina està disponible per a molts sistemes que s'executen en diferents plataformes de maquinari (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 i OS X. La darrera versió 6.2 es va publicar el 10 de gener de 2018. És probable que els scripts escrits per a versions anteriors funcionin en versions posteriors, però el backporting pot ser problemàtic perquè PowerShell ha introduït un gran nombre de nous cmdlets al llarg dels anys de desenvolupament. Podeu esbrinar la versió de l'intèrpret d'ordres instal·lat a l'ordinador mitjançant la propietat PSVersion de la variable integrada $PSVersionTable:

$PSVersionTable.PSVersion

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau
També podeu utilitzar el cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau
El mateix es fa amb el cmdlet Get-Host. De fet, hi ha moltes opcions, però per utilitzar-les cal aprendre el llenguatge de programació PowerShell, que farem a article següent

Resultats de 

Microsoft ha aconseguit crear un shell realment potent amb un entorn integrat convenient per desenvolupar scripts. Es diferencia de les eines que ens coneixen al món Unix per una profunda integració amb els sistemes operatius de la família Windows, així com amb el programari per a ells i la plataforma .NET Core. El PowerShell es pot anomenar shell orientat a objectes perquè els cmdlets i les funcions definides per l'usuari retornen objectes o matrius d'objectes i els poden prendre com a entrada. Creiem que tots els administradors de servidors de Windows haurien de ser propietaris d'aquesta eina: ha passat el temps en què podien prescindir de la línia d'ordres. Es necessita especialment un shell de consola avançat el nostre VPS de baix cost amb Windows Server Core, però aquesta és una història completament diferent.

Què és Windows PowerShell i amb què es menja? Part 1: Característiques clau

Només els usuaris registrats poden participar en l'enquesta. Inicia sessiósi us plau.

Quins temes s'han de tractar primer en els propers articles de la sèrie?

  • 53,2%Programació en PowerShell123

  • 42,4%Funcions i mòduls de PowerShell98

  • 22,1%Com signar els vostres propis guions?51

  • 12,1%Treballar amb repositoris a través de proveïdors (proveïdors)28

  • 57,6%Automatització de l'administració informàtica amb PowerShell133

  • 30,7%Gestió de programari i incrustació d'executables de PowerShell en productes de tercers71

Han votat 231 usuaris. 37 usuaris es van abstenir.

Font: www.habr.com

Afegeix comentari