Que é Windows PowerShell e con que se come? Parte 1: Características principais

Históricamente, as utilidades de liña de comandos nos sistemas Unix están mellor desenvolvidas que en Windows, pero coa chegada dunha nova solución, a situación cambiou.

Windows PowerShell permite aos administradores do sistema automatizar a maioría das tarefas rutineiras. Coa súa axuda, pode cambiar a configuración, deter e iniciar servizos e tamén realizar o mantemento da maioría das aplicacións instaladas. Sería incorrecto percibir a ventá azul como outro intérprete de comandos. Este enfoque non reflicte a esencia das innovacións propostas por Microsoft. De feito, as capacidades de Windows PowerShell son moito máis amplas: nunha pequena serie de artigos trataremos de descubrir en que se diferencia a solución de Microsoft das ferramentas coas que estamos máis familiarizados.

Que é Windows PowerShell e con que se come? Parte 1: Características principais

Características clave 

Por suposto, Windows PowerShell é principalmente un shell de comandos cunha linguaxe de script, construído orixinalmente en .NET Framework e posteriormente en .NET Core. A diferenza dos shells que aceptan e devolven datos de texto, Windows PowerShell funciona con clases .NET, que teñen propiedades e métodos. PowerShell permítelle executar comandos comúns e tamén lle dá acceso a obxectos COM, WMI e ADSI. Utiliza varios almacenamentos, como o sistema de ficheiros ou o rexistro de Windows, para o acceso aos que se chama. provedores. Cabe destacar a posibilidade de incorporar compoñentes executables de PowerShell noutras aplicacións para implementar varias operacións, incl. mediante interface gráfica. O contrario tamén é certo: moitas aplicacións de Windows proporcionan acceso ás súas interfaces de xestión a través de PowerShell. 

Windows PowerShell permítelle:

  • Cambiar a configuración do sistema operativo;
  • Xestionar servizos e procesos;
  • Configurar roles e compoñentes do servidor;
  • instalar software;
  • Xestionar o software instalado a través de interfaces especiais;
  • Incorporar compoñentes executables en programas de terceiros;
  • Crea scripts para automatizar tarefas de administración;
  • Traballar co sistema de ficheiros, o rexistro de Windows, o almacén de certificados, etc.

Shell e entorno de desenvolvemento

Windows PowerShell existe de dúas formas: ademais do emulador de consola cun shell de comandos, hai un entorno de scripting integrado (ISE). Para acceder á interface de liña de comandos, simplemente seleccione o atallo axeitado no menú de Windows ou execute powershell.exe desde o menú Executar. Aparecerá unha xanela azul na pantalla, notablemente diferente nas capacidades do cmd.exe antediluviano. Hai o autocompletado e outras funcións coñecidas para os usuarios de shells de comandos para sistemas Unix.

Que é Windows PowerShell e con que se come? Parte 1: Características principais

Para traballar co shell, cómpre lembrar algúns atallos de teclado:

  • As frechas cara arriba e abaixo desprázanse polo historial para repetir os comandos escritos anteriormente;
  • A frecha cara á dereita ao final da liña volve escribir o comando anterior carácter por carácter;
  • Ctrl+Inicio elimina o texto escrito dende a posición do cursor ata o inicio da liña;
  • Ctrl+Fin elimina o texto desde o cursor ata o final da liña.

F7 mostra unha xanela cos comandos introducidos e permíteche seleccionar un deles. A consola tamén funciona seleccionando texto co rato, copiando e pegando, posicionando o cursor, eliminando, retroceso, todo o que nos gusta.

Que é Windows PowerShell e con que se come? Parte 1: Características principais
Windows PowerShell ISE é un ambiente de desenvolvemento completo cun editor de código que admite pestanas e resaltado de sintaxe, un deseñador de comandos, un depurador integrado e outras delicias de programación. Se escribe un guión despois do nome do comando no editor do contorno de desenvolvemento, recibirá todos os parámetros dispoñibles na lista despregable, indicando o tipo. Pode iniciar PowerShell ISE mediante un atallo do menú do sistema ou mediante o ficheiro executable powershell_ise.exe.

Que é Windows PowerShell e con que se come? Parte 1: Características principais

Cmdlets 

En Windows PowerShell, o chamado. cmdlets. Estas son clases .NET especializadas que proporcionan unha variedade de funcionalidades. Noméanse segundo o principio "Acción-Obxecto" (ou "Verbo-Sustantivo, se o prefires), e o conectivo separado por guións aseméllase ao predicado e ao suxeito nas oracións da linguaxe natural. Por exemplo, Get-Help significa literalmente "Get-Help" ou nun contexto de PowerShell: "Show-Help". De feito, este é un análogo do comando man en sistemas Unix, e os manuais en PowerShell deben solicitarse deste xeito, e non chamando a cmdlets coa tecla –help ou /?. Non esquezas a documentación en liña para PowerShell: Microsoft teno bastante detallado.

Ademais de Get, os cmdlets tamén usan outros verbos para indicar accións (e non só verbos, en rigor). Na seguinte lista damos algúns exemplos:

Add - engadir;
Clear - limpar;
Enable - acende;
Disable - apagar;
New - crear;
Remove - eliminar;
Set - preguntar;
Start - correr;
Stop - parar;
Export - exportación;
Import - importación.

Hai cmdlets de sistema, de usuario e opcionais: como resultado da execución, todos devolven un obxecto ou unha matriz de obxectos. Non distinguen entre maiúsculas e minúsculas, é dicir. Desde o punto de vista do intérprete de comandos, non hai diferenza entre Get-Help e get-help. O símbolo ';' úsase para a separación, pero só é necesario se se executan varios cmdlets nunha liña. 

Os cmdlets de Windows PowerShell agrúpanse en módulos (NetTCPIP, Hyper-V, etc.) e hai un cmdlet Get-Command para buscar por obxecto e acción. Podes mostrar axuda sobre ela deste xeito:

Get-Help Get-Command

Que é Windows PowerShell e con que se come? Parte 1: Características principais

Por defecto, o comando mostra unha axuda rápida, pero os parámetros (argumentos) pásanse aos cmdlets segundo sexa necesario. Coa súa axuda, pode, por exemplo, obter axuda detallada (-Parámetro detallado) ou completa (-Completa), así como mostrar exemplos (parámetro -Exemplos):

Get-Help Get-Command -Examples

A axuda en Windows PowerShell actualízase co cmdlet Update-Help. Se unha liña de comandos resulta ser demasiado longa, os argumentos do cmdlet pódense transferir á seguinte escribindo o carácter de servizo '`' e premendo Intro; simplemente non funcionará terminar de escribir un comando nunha liña e continuar noutra.

A continuación móstranse algúns exemplos de cmdlets comúns: 

Get-Process — mostrar os procesos en execución no sistema;
Get-Service — Mostrar servizos e o seu estado;
Get-Content - mostrar o contido do ficheiro.

Para os cmdlets e utilidades externas de uso frecuente, Windows PowerShell ten sinónimos curtos: alias. Por exemplo, dir é un alias para Get-ChildItem. Tamén hai análogos de comandos dos sistemas Unix na lista de sinónimos (ls, ps, etc.), e o comando de axuda chama ao cmdlet Get-Help. A lista completa de sinónimos pódese ver usando o cmdlet Get-Alias:

Que é Windows PowerShell e con que se come? Parte 1: Características principais

Scripts, funcións, módulos e linguaxe de PowerShell

Os scripts de Windows PowerShell almacénanse como ficheiros de texto simple cunha extensión .ps1. Non pode executalos facendo dobre clic: cómpre facer clic co botón dereito para abrir o menú contextual e seleccionar "Executar en PowerShell". Desde a consola terás que especificar o camiño completo ao script ou ir ao directorio axeitado e escribir o nome do ficheiro. A execución de scripts tamén está limitada pola política do sistema e, para comprobar a configuración actual, pode usar o cmdlet Get-ExecutionPolicy, que devolverá un dos seguintes valores:

Restricted — está prohibido executar scripts (por defecto);
AllSigned — só se permiten executar scripts asinados por un programador de confianza;
RemoteSigned - Permítese executar scripts asinados e propios;
Unrestricted - Permítese executar calquera script.

O administrador ten dúas opcións. O máis seguro implica asinar guións, pero esta é unha feiticería bastante grave: tratarémola nos seguintes artigos. Agora tomemos o camiño de menor resistencia e cambiemos a política:

Set-ExecutionPolicy RemoteSigned

Que é Windows PowerShell e con que se come? Parte 1: Características principais
Para iso, terás que executar PowerShell como administrador, aínda que podes usar un parámetro especial para cambiar a política do usuario actual.

Os scripts están escritos nunha linguaxe de programación orientada a obxectos, cuxos comandos son nomeados segundo o mesmo principio que os cmdlets anteriormente comentados: "Acción-Obxecto" ("Verbo-Sustantivo"). A súa finalidade principal é automatizar tarefas de administración, pero é unha linguaxe interpretada de pleno dereito que conta con todos os construtos necesarios: salto condicional, bucles, variables, matrices, obxectos, tratamento de erros, etc. Calquera editor de texto é axeitado para escribir scripts, pero o máis cómodo é executar Windows PowerShell ISE.

Podes pasar parámetros ao script, facelos obrigatorios e tamén establecer valores predeterminados. Windows PowerShell tamén permítelle crear e chamar funcións do mesmo xeito que os cmdlets, utilizando a construción Function e as chaves. Un script con funcións chámase módulo e ten unha extensión .psm1. Os módulos deben almacenarse en directorios definidos nas variables de ambiente de PowerShell. Podes velos usando o seguinte comando:

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

Transportadores

No último exemplo, usamos un deseño familiar para os usuarios de shells de Unix. En Windows PowerShell, a barra vertical tamén permite pasar a saída dun comando á entrada doutro, pero hai unha diferenza significativa na implementación da canalización: xa non falamos dun conxunto de caracteres ou dun texto. Os cmdlets integrados ou as funcións definidas polo usuario devolven obxectos ou matrices de obxectos e tamén poden recibilos como entrada. Do mesmo xeito que o shell de Bourne e os seus numerosos sucesores, PowerShell usa unha canalización para simplificar tarefas complexas.

O exemplo máis sinxelo dunha canalización é o seguinte:

Get-Service | Sort-Object -property Status

Que é Windows PowerShell e con que se come? Parte 1: Características principais
Primeiro execútase o cmdlet Get-Service e, a continuación, todos os servizos que recibe pásanse ao cmdlet Sort-Object para ordenalos pola propiedade Status. A que argumento se pasa o resultado da sección anterior da canalización depende do seu tipo; normalmente é InputObject. Esta cuestión será tratada con máis detalle nun artigo dedicado á linguaxe de programación PowerShell. 

Se o desexa, pode continuar a cadea e pasar o resultado de Sort-Object a outro cmdlet (executaranse de esquerda a dereita). Por certo, os usuarios de Windows tamén teñen acceso ao deseño familiar de todos os Unixoids para a saída páxina por páxina: 

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

Execución de tarefas en segundo plano 

Moitas veces é necesario executar un determinado comando en segundo plano para non esperar o resultado da súa execución na sesión do shell. Windows PowerShell ten varios cmdlets para esta situación:

Start-Job — iniciar unha tarefa en segundo plano;
Stop-Job — deter unha tarefa en segundo plano;
Get-Job — ver a lista de tarefas en segundo plano;
Receive-Job — ver o resultado dunha tarefa en segundo plano;
Remove-Job — eliminar unha tarefa en segundo plano;
Wait-Job — transferir a tarefa en segundo plano de novo á consola.

Para iniciar unha tarefa en segundo plano, usamos o cmdlet Start-Job e especificamos un comando ou conxunto de comandos entre chaves:

Start-Job {Get-Service}

Que é Windows PowerShell e con que se come? Parte 1: Características principais
As tarefas en segundo plano en Windows PowerShell pódense manipular coñecendo os seus nomes. Primeiro, imos aprender a mostralos:

Get-Job

Que é Windows PowerShell e con que se come? Parte 1: Características principais
Agora imos mostrar o resultado de Job1:

Receive-Job Job1 | more

Que é Windows PowerShell e con que se come? Parte 1: Características principais
É ben sinxelo.

Execución de comandos remotos

Windows PowerShell permítelle executar comandos e scripts non só localmente, senón tamén nun ordenador remoto e mesmo nun grupo enteiro de máquinas. Hai varias formas de facelo:

  • Moitos cmdlets teñen un parámetro -ComputerName, pero deste xeito non será posible, por exemplo, crear unha cinta transportadora;
  • Cmdlet Enter-PSSession permítelle crear unha sesión interactiva nunha máquina remota; 
  • Usando un cmdlet Invoke-Command Pode executar comandos ou scripts nun ou máis ordenadores remotos.

Versións de PowerShell

Desde o seu primeiro lanzamento en 2006, PowerShell cambiou moito. A ferramenta está dispoñible para moitos sistemas que se executan en diferentes plataformas de 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 e OS X. A última versión 6.2 publicouse o 10 de xaneiro de 2018. É moi probable que os scripts escritos para versións anteriores funcionen nas posteriores, pero poden xurdir problemas cunha transferencia inversa, xa que ao longo dos anos de desenvolvemento apareceron un gran número de novos cmdlets en PowerShell. Podes descubrir a versión do shell de comandos instalado no teu ordenador usando a propiedade PSVersion da variable integrada $PSVersionTable:

$PSVersionTable.PSVersion

Que é Windows PowerShell e con que se come? Parte 1: Características principais
Tamén podes usar o cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

Que é Windows PowerShell e con que se come? Parte 1: Características principais
O mesmo pódese facer usando o cmdlet Get-Host. De feito, hai moitas opcións, pero para usalas é preciso aprender a linguaxe de programación PowerShell, que é o que faremos en seguinte artigo

Resultados de 

Microsoft conseguiu crear un shell de comandos verdadeiramente poderoso cun ambiente integrado cómodo para desenvolver scripts. O que o distingue das ferramentas que coñecemos no mundo Unix é a súa profunda integración cos sistemas operativos da familia Windows, así como co software para eles e a plataforma .NET Core. PowerShell pódese chamar shell orientado a obxectos porque os cmdlets e as funcións definidas polo usuario devolven obxectos ou matrices de obxectos e poden recibilos como entrada. Pensamos que todos os administradores de servidores de Windows deberían ser propietarios desta ferramenta: xa pasou o tempo en que podían prescindir da liña de comandos. É especialmente necesario un shell de consola avanzado o noso VPS de baixo custo que executa Windows Server Core, pero esa é unha historia completamente diferente.

Que é Windows PowerShell e con que se come? Parte 1: Características principais

Só os usuarios rexistrados poden participar na enquisa. Rexístrate, por favor.

Que temas deberían tratarse primeiro nos próximos artigos da serie?

  • 53,2%Programación en PowerShell 123

  • 42,4%Funcións e módulos de PowerShell98

  • 22,1%Como asinar os teus propios guións?51

  • 12,1%Traballar con almacenamentos a través de provedores28

  • 57,6%Automatiza a administración do ordenador usando PowerShell133

  • 30,7%Xestionar software e incorporar executables de PowerShell en produtos de terceiros71

Votaron 231 usuarios. 37 usuarios abstivéronse.

Fonte: www.habr.com

Engadir un comentario