¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave

Históricamente, las utilidades de línea de comandos en los sistemas Unix están mejor desarrolladas que en Windows, pero con la llegada de una nueva solución, la situación ha cambiado.

Windows PowerShell permite a los administradores del sistema automatizar la mayoría de las tareas rutinarias. Con su ayuda, puede cambiar la configuración, detener e iniciar servicios y también realizar el mantenimiento de la mayoría de las aplicaciones instaladas. Sería un error percibir la ventana azul como un intérprete de comandos más. Este enfoque no refleja la esencia de las innovaciones propuestas por Microsoft. De hecho, las capacidades de Windows PowerShell son mucho más amplias: en una breve serie de artículos intentaremos descubrir en qué se diferencia la solución de Microsoft de las herramientas con las que estamos más familiarizados.

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave

Características principales 

Por supuesto, Windows PowerShell es principalmente un shell de secuencias de comandos, originalmente creado en .NET Framework y posteriormente en .NET Core. A diferencia de los shells que aceptan y devuelven datos de texto, Windows PowerShell funciona con clases .NET que tienen propiedades y métodos. PowerShell le permite ejecutar comandos comunes y también le brinda acceso a objetos COM, WMI y ADSI. Utiliza varios almacenamientos, como el sistema de archivos o el registro de Windows, para acceder a los llamados. proveedores. Vale la pena señalar la posibilidad de integrar componentes ejecutables de PowerShell en otras aplicaciones para implementar diversas operaciones, incl. a través de interfaz gráfica. Lo contrario también ocurre: muchas aplicaciones de Windows brindan acceso a sus interfaces de administración a través de PowerShell. 

Windows PowerShell le permite:

  • Cambiar la configuración del sistema operativo;
  • Gestionar servicios y procesos;
  • Configurar funciones y componentes del servidor;
  • Instalar software;
  • Gestionar el software instalado a través de interfaces especiales;
  • Incrustar componentes ejecutables en programas de terceros;
  • Cree scripts para automatizar tareas de administración;
  • Trabajar con el sistema de archivos, registro de Windows, almacén de certificados, etc.

Shell y entorno de desarrollo

Windows PowerShell existe en dos formas: además del emulador de consola con un shell de comandos, existe un entorno de secuencias de comandos integrado (ISE). Para acceder a la interfaz de línea de comandos, simplemente seleccione el acceso directo apropiado en el menú de Windows o ejecute powershell.exe desde el menú Ejecutar. Aparecerá una ventana azul en la pantalla, notablemente diferente en capacidades del antediluviano cmd.exe. Hay autocompletado y otras características familiares para los usuarios de shells de comandos para sistemas Unix.

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave

Para trabajar con el shell necesitas recordar algunos atajos de teclado:

  • Las flechas hacia arriba y hacia abajo se desplazan por el historial para repetir comandos escritos previamente;
  • La flecha derecha al final de la línea vuelve a escribir el comando anterior carácter por carácter;
  • Ctrl+Inicio elimina el texto escrito desde la posición del cursor hasta el principio de la línea;
  • Ctrl+Fin elimina el texto desde el cursor hasta el final de la línea.

F7 muestra una ventana con los comandos ingresados ​​y le permite seleccionar uno de ellos. La consola también funciona seleccionando texto con el mouse, copiando y pegando, posicionando el cursor, eliminando, retrocediendo: todo lo que nos encanta.

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave
Windows PowerShell ISE es un entorno de desarrollo completo con un editor de código con pestañas y sintaxis resaltada, un generador de comandos, un depurador integrado y otros placeres de la programación. Si escribe un guión después del nombre del comando en el editor del entorno de desarrollo, obtendrá todas las opciones disponibles en la lista desplegable con una indicación del tipo. Puede iniciar PowerShell ISE a través de un acceso directo desde el menú del sistema o utilizando el archivo ejecutable powershell_ise.exe.

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave

cmdlets 

En Windows PowerShell, el llamado. cmdlets. Estas son clases .NET especializadas que brindan una variedad de funcionalidades. Se nombran según el principio “Acción-Objeto” (o “Verbo-Sustantivo, si lo prefiere), y el conectivo separado por guiones se parece al predicado y al sujeto en las oraciones del lenguaje natural. Por ejemplo, Get-Help significa literalmente "Obtener ayuda" o en un contexto de PowerShell: "Mostrar ayuda". De hecho, este es un análogo del comando man en los sistemas Unix, y los manuales en PowerShell deben solicitarse de esta manera, y no llamando a los cmdlets con la tecla –help o /?. No se olvide de la documentación en línea para PowerShell: Microsoft lo tiene bastante detallado.

Además de Get, los cmdlets utilizan otros verbos para indicar acciones (y no sólo verbos, estrictamente hablando). En la siguiente lista damos algunos ejemplos:

Add - agregar;
Clear - limpio;
Enable - encender;
Disable - apagar;
New - crear;
Remove - borrar;
Set - preguntar;
Start - correr;
Stop - detener;
Export - exportar;
Import - importar.

Hay cmdlets de sistema, de usuario y opcionales: como resultado de la ejecución, todos devuelven un objeto o una matriz de objetos. No distinguen entre mayúsculas y minúsculas, es decir. Desde el punto de vista del intérprete de comandos, no hay diferencia entre Get-Help y get-help. El carácter ';' se utiliza para la separación, pero es obligatorio ponerlo sólo si se ejecutan varios cmdlets en la misma línea. 

Los cmdlets de Windows PowerShell están agrupados en módulos (NetTCPIP, Hyper-V, etc.) y hay un cmdlet Get-Command para buscar por objeto y acción. Puedes mostrar ayuda de esta manera:

Get-Help Get-Command

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave

De forma predeterminada, el comando muestra una breve ayuda, pero los parámetros (argumentos) se pasan a los cmdlets según sea necesario. Con su ayuda, puede, por ejemplo, obtener ayuda detallada (parámetro -Detallada) o completa (parámetro -Completa), así como mostrar ejemplos (parámetro -Ejemplos):

Get-Help Get-Command -Examples

La ayuda en Windows PowerShell se actualiza mediante el cmdlet Update-Help. Si la línea de comando resulta ser demasiado larga, los argumentos del cmdlet se pueden mover a la siguiente escribiendo el carácter de servicio '`' y presionando Enter; simplemente terminar de escribir el comando en una línea y continuar en otra no funcionará.

A continuación se muestran algunos ejemplos de cmdlets comunes: 

Get-Process - mostrar los procesos en ejecución en el sistema;
Get-Service — mostrar los servicios y su estado;
Get-Content - mostrar el contenido del archivo.

Para cmdlets y utilidades externas de uso frecuente, Windows PowerShell tiene sinónimos breves: alias (del inglés. Alias). Por ejemplo, dir es un alias de Get-ChildItem. La lista de sinónimos también incluye análogos de comandos de sistemas Unix (ls, ps, etc.), y el comando de ayuda llama al cmdlet Get-Help. Se puede ver una lista completa de sinónimos utilizando el cmdlet Get-Alias ​​​​:

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave

Scripts, funciones, módulos y el lenguaje PowerShell

Los scripts de Windows PowerShell se almacenan como archivos de texto sin formato con una extensión .ps1. No puede iniciarlos haciendo doble clic: debe hacer clic derecho para abrir el menú contextual y seleccionar el elemento "Ejecutar en PowerShell". Desde la consola, deberá especificar la ruta completa al script o ir al directorio apropiado y escribir el nombre del archivo. La ejecución de scripts también está limitada por la política del sistema y, para verificar la configuración actual, puede usar el cmdlet Get-ExecutionPolicy, que devolverá uno de los siguientes valores:

Restricted — está prohibido ejecutar scripts (por defecto);
AllSigned - sólo se permite ejecutar scripts firmados por un desarrollador de confianza;
RemoteSigned - permitido ejecutar scripts propios y firmados;
Unrestricted - permitido ejecutar cualquier script.

El administrador tiene dos opciones. La más segura consiste en firmar scripts, pero esto es un hechizo bastante serio; lo trataremos en los siguientes artículos. Ahora tomemos el camino de menor resistencia y cambiemos la política:

Set-ExecutionPolicy RemoteSigned

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave
Para hacer esto, deberá ejecutar PowerShell como administrador, aunque puede usar un parámetro especial para cambiar la política del usuario actual.

Los scripts están escritos en un lenguaje de programación orientado a objetos, cuyos comandos se nombran según el mismo principio que los cmdlets discutidos anteriormente: "Acción-Objeto" ("Verbo-Sustantivo"). Su objetivo principal es automatizar tareas administrativas, pero es un lenguaje interpretado completo que tiene todas las construcciones necesarias: salto condicional, bucles, variables, matrices, objetos, manejo de errores, etc. Cualquier editor de texto es adecuado para secuencias de comandos, pero es mejor ejecutar Windows PowerShell ISE.

Puede pasar parámetros al script, hacerlos obligatorios y establecer valores predeterminados. Además, Windows PowerShell le permite crear y llamar funciones de la misma manera que los cmdlets, utilizando la construcción Función y llaves. Un script con funciones se llama módulo y tiene una extensión .psm1. Los módulos deben almacenarse en directorios definidos en las variables de entorno de PowerShell. Puedes verlos con el siguiente comando:

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

Transportadores

En el último ejemplo, hemos utilizado una construcción que resulta familiar para los usuarios del shell Unix. En Windows PowerShell, la barra vertical también le permite pasar la salida de un comando a la entrada de otro, pero hay una diferencia significativa en la implementación de la canalización: ya no estamos hablando de un conjunto de caracteres o algún tipo de texto. Los cmdlets integrados o las funciones definidas por el usuario devuelven objetos o matrices de objetos y también pueden recibirlos como entrada. Al igual que el shell Bourne y sus muchos sucesores, PowerShell facilita las tareas complejas con una canalización.

El ejemplo más simple de una canalización se ve así:

Get-Service | Sort-Object -property Status

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave
Primero, se ejecuta el cmdlet Get-Service y luego todos los servicios recibidos se pasan al cmdlet Sort-Object para ordenarlos según la propiedad Status. El argumento al que se pasa el resultado de la sección anterior de la canalización depende de su tipo; normalmente es InputObject. Este tema se analizará con más detalle en un artículo dedicado al lenguaje de programación PowerShell. 

Si lo deseas, puedes continuar la cadena y pasar el resultado de la operación Sort-Object a otro cmdlet (se ejecutarán de izquierda a derecha). Por cierto, los usuarios de Windows también tienen acceso a la construcción de paginación familiar para todos los Unixoides: 

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

Ejecutar tareas en segundo plano 

Muy a menudo, es necesario ejecutar un determinado comando en segundo plano para no esperar el resultado de su ejecución en la sesión de shell. Windows PowerShell tiene varios cmdlets para esta situación:

Start-Job - iniciar una tarea en segundo plano;
Stop-Job — detener una tarea en segundo plano;
Get-Job — ver la lista de tareas en segundo plano;
Receive-Job — ver el resultado de la ejecución de la tarea en segundo plano;
Remove-Job — eliminar una tarea en segundo plano;
Wait-Job - transferir la tarea en segundo plano nuevamente a la consola.

Para iniciar una tarea en segundo plano, usamos el cmdlet Start-Job y especificamos un comando o conjunto de comandos entre llaves:

Start-Job {Get-Service}

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave
Las tareas en segundo plano en Windows PowerShell se pueden manipular conociendo sus nombres. Primero, aprendamos cómo mostrarlos:

Get-Job

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave
Ahora mostremos el resultado de Job1:

Receive-Job Job1 | more

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave
Todo es bastante simple.

Ejecución remota de comandos

Windows PowerShell le permite ejecutar comandos y scripts no sólo localmente, sino también en una computadora remota e incluso en un grupo completo de máquinas. Hay varias formas de hacer esto:

  • Muchos cmdlets tienen un parámetro -ComputerName, pero de esta forma no funcionará, por ejemplo, crear un transportador;
  • cmdlet Enter-PSSession le permite crear una sesión interactiva en una máquina remota; 
  • Usando el cmdlet Invoke-Command puede ejecutar comandos o scripts en una o más computadoras remotas.

Versiones de PowerShell

PowerShell ha cambiado mucho desde su primer lanzamiento en 2006. La herramienta está disponible para muchos sistemas que se ejecutan 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 y OS X. La última versión 6.2 se lanzó el 10 de enero de 2018. Es probable que los scripts escritos para versiones anteriores funcionen en versiones posteriores, pero la adaptación puede ser problemática porque PowerShell ha introducido una gran cantidad de cmdlets nuevos a lo largo de los años de desarrollo. Puede averiguar la versión del shell de comandos instalado en la computadora usando la propiedad PSVersion de la variable incorporada $PSVersionTable:

$PSVersionTable.PSVersion

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave
También puedes usar el cmdlet:

Get-Variable -Name PSVersionTable –ValueOnly

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave
Lo mismo se hace con el cmdlet Get-Host. De hecho, hay muchas opciones, pero para usarlas es necesario aprender el lenguaje de programación PowerShell, lo cual haremos en siguiente articulo

resultados 

Microsoft ha logrado crear un shell realmente potente con un entorno integrado conveniente para desarrollar scripts. Se diferencia de las herramientas que conocemos en el mundo Unix por una profunda integración con los sistemas operativos de la familia Windows, así como con el software para ellos y la plataforma .NET Core. PowerShell puede denominarse shell orientado a objetos porque los cmdlets y las funciones definidas por el usuario devuelven objetos o matrices de objetos y pueden tomarlos como entrada. Creemos que todos los administradores de servidores en Windows deberían poseer esta herramienta: ya pasó el tiempo en que podían prescindir de la línea de comandos. Se necesita especialmente un shell de consola avanzado en nuestro VPS de bajo costo con Windows Server Core, pero esa es una historia completamente diferente.

¿Qué es Windows PowerShell y con qué se come? Parte 1: Características clave

Solo los usuarios registrados pueden participar en la encuesta. Registrarsepor favor

¿Qué temas deberían tratarse primero en los próximos artículos de la serie?

  • 53,2%Programación en PowerShell123

  • 42,4%Funciones y módulos de PowerShell98

  • 22,1%¿Cómo firmar tus propios guiones?51

  • 12,1%Trabajar con repositorios a través de proveedores (proveedores)28

  • 57,6%Automatizar la administración de computadoras usando PowerShell133

  • 30,7%Gestión de software e incorporación de ejecutables de PowerShell en productos de terceros71

231 usuarios votaron. 37 usuarios se abstuvieron.

Fuente: habr.com

Añadir un comentario