A Fondo
Windows PowerShell: usos, manejo y comandos principales de la consola
Windows PowerShell y el símbolo del sistema son las dos aplicaciones de línea de comandos de Microsoft. Pueden usarse por separado por su integración en los sistemas Windows o en la aplicación de código abierto y gratuita, Windows Terminal, desde donde puede ejecutarse de manera nativa.
Equivalentes a la terminal de Linux o la que proporcionan otros sistemas operativos como macOS, las dos son visualmente bastante similares, pero en la práctica ofrecen diferencias significativas. Y es que Windows PowerShell está más destinada a administradores de sistemas y usuarios avanzados, que pretendan realizar tareas en el sistema operativo de forma más flexible y rápida.
Y es que la consola de Windows todavía es necesaria. A pesar de la naturaleza gráfica de Windows y su casi nula dependencia de estas consola, su uso ofrece ventajas significativas en determinadas tareas. Aunque se ejecutan en modo texto y no son tan intuitivas como una interfaz gráfica de usuario, muestran su potencial a la hora de ejecutar tareas repetitivas, en ocasiones donde se bloquea la interfaz gráfica, para gestionar determinados componentes o acceder a cierta información del sistema que no está disponible de ninguna otra manera.
Su funcionamiento es simple a la vez que potente. Escribimos el comando y la aplicación CMD hace de intérprete para su ejecución. El uso de modificadores para cada uno de los comandos permite ejecutar centenares de combinaciones para una amplia variedad de tareas en sus dos formas de uso: modo usuario y administrador.
Windows PowerShell
Microsoft comenzó a trabajar a comienzos de siglo en una consola más avanzada que sus anteriores líneas de comando. Conocido en su desarrollo como Microsoft Shell o «Monad» vio la luz integrado en Windows Vista como PowerShell.
Una interfaz de consola (CLI) que además de las posibilidades del símbolo del sistema, ofrece un mayor número de posibilidades ya que permite crear sus propios comandos y secuencias de comandos utilizando el lenguaje de programación C#. Tanto PowerShell como C# están integrados en Microsoft .NET Framework, lo que significa que tiene acceso a muchas funciones y herramientas preexistentes para ayudarlo a crear mejores comandos y scripts con menos esfuerzo.
Windows PowerShell ofrece muchas características avanzadas como la ejecución remota de tareas, tareas en segundo plano, automatización de tareas, canalización de comandos y más, que lo convierten en la opción preferida para administradores de sistemas y los usuarios más avanzados. Lógicamente, la curva de aprendizaje es superior al intérprete de línea de comandos.
Microsoft ha ido mejorando las funciones de PowerShell en los sucesivos lanzamientos de su sistema operativo, pero ha sido en Windows 10 donde ha alcanzado sus máximas prestaciones con un administrador de paquetes mejorado sobre lo que ofrecía el anterior OneGet y que permite administrar todo el software que descargas, instalas y eliminas.
También interesante el soporte nativo añadido para OpenSSH, el conjunto de aplicaciones que permiten realizar comunicaciones cifradas a través de una red usando el protocolo SSH, lo que significa que los desarrolladores no tienen que depender de software de terceros (como el popular PuTTY) cada vez que conectan a un servidor remoto, pudiendo realizarlo desde esta consola de Windows.
Otra cuestión importante de Windows PowerShell es la disponibilidad en GitHub bajo licencia MIT y con versiones añadidas para Mac y Linux, tras su liberación como código abierto. El objetivo de este movimiento fue facilitar la implementación de tecnologías Microsoft en servidores Linux con dos perfiles de usuario en mente, los propios administradores de sistemas Linux y aquellos de Windows que busquen una transición más escalonada al sistema libre.
Al igual que el símbolo del sistema, el acceso a Windows PowerShell es muy sencillo mediante las teclas rápidas «Windows + X». Puedes colocar uno u otro en el menú de inicio avanzado directamente en la barra de tareas con una opción en la configuración.
Como habrás leído la consola de Windows «también existe» y es cada vez más poderosa especialmente si usas la versión avanzada Windows Powershell. Aunque algunas de sus funciones pueden ejecutarse desde la interfaz gráfica de manera más sencilla e intuitiva, usuarios medios y avanzados con cierto conocimiento pueden obtener grandes resultados. Y como ejemplo de uso, te dejamos con los comandos imprescindibles a usar en la consola.
Diez comandos imprescindibles para iniciarse en Windows PowerShell
Get-Command
Si estás dando tus primeros pasos en PowerShell, estamos seguros que agracederás poder contar con un cmdlet tan útil como «Get-Command». Al ejecutarlo, Windows te mostrará todos los comandos disponibles para tu sesión actual en PowerShell.
get-command
Get-Help
Si necesitamos ayuda, no tenemos más que pedirla. Y aquí el comando Get-Help nos va a proporcionar, nunca mejor dicho, una ayuda fundamental cuando no sepamos exactamente qué es lo que estamos haciendo o con qué otras opciones podemos trabajar en nuesta línea de comandos. Una forma habitual de utilizar este cmdlet es la siguiente:
Get-Help [[-Name] ] [-Path ] [-Category <String[]>] [-Component <String[]>]
Set-ExecutionPoliciy
Como medida de seguridad y para evitar la inyección de código malicioso, Microsoft deshabilita por defecto, la posibilidad de ejecutar scripts en el entorno PowerShell. A la mayoría de los desarrolladores en cambio, les interesa (y mucho), poder disponer de esta funcionalidad.
Para conseguirlo, el comando Set-ExecutionPolicy establece distintos niveles de control, alrededor de los cuales pueden ejecutarse distintos scripts. Son los siguientes:
-
- Restricted: No carga archivos de configuración, ni ejecuta scripts. Esta es la configuración predeterminada.
- Allsigned: Requiere que todos los scripts y archivos de configuración estén firmados por un editor de confianza.
- Remotesigned:Requiere que todos los scripts y archivos de configuración descargados de Internet estén firmados por un editor de confianza
Unrestricted: Carga todos los archivos de configuración y ejecuta todos los scripts
Como en el caso de get-command, si no sabemos en qué entorno «nos estamos moviendo» podemos averiguarlo fácilmente ejecutando el comando Get-ExecutionPolicy
Get-Service
Además de los comandos con los que podemos trabajar, también es útil saber con qué servicios podemos contar en el sistema. Podemos averiguarlo sencillamente con el comando Get-Service. Una salida típica para este comando podría ser la siguiente:
Status Name DisplayName
------ ---- -----------
Running AdobeActiveFile... Adobe Active File Monitor V4
Stopped Alerter Alerter
Running ALG Application Layer Gateway Service
Stopped AppMgmt Application Management
Running ASChannel Local Communication Channel
Si necesitamos conocer el estado de un servicio concreto, escribiremos el nombre del mismo tras el sufijo -Name
ConvertTo-HTML
Si necesitamos extraer los datos de PowerShell para compartirlos con una tercera persona, el comando ConvertTo-HTML es una forma muy recomendable de hacerlo. Utilizarlo es tan sencillo como incluirlo como sufijo de cualquier otro comando cuyo output queramos guardar. Además deberemos determinar el nombre de un archivo HTML. Por ejemplo, de la siguiente forma:
PS C:\> get-alias | convertto-html > aliases.htm
PS C:\> invoke-item aliases.htm
Si en vez de HTML preferimos el formato CSV, podemos utilizar de la misma forma el comando Export-CSV
.
Get-EventLog
Una de las utilidades más interesantes de PowerShell es analizar los registros de eventos de nuestro equipo. Para ello utilizaremos el cmdlet Get-Eventlog. Para hacerlo, utilizaremos el parámetro -Log seguido del nombre del archivo de registro para ver un registro específico. Una forma de utilizarlo es la siguiente:
Get-EventLog -Log "Application"
Get-Process
De la misma forma que nos puede interesar acceder a un listado de comandos y servicios, nos puede resultar muy útil entender qué procesos se están ejecutando en un momento determinado. El comando Get-Process nos ofrece esta información.
Además de para saber qué es lo que se está ejecutando, este cmdlet nos sirve como primer paso para terminar un proceso que no está funcionando como debería o qué se ha bloqueado. Para ello utilizaremos la orden Stop-Process. Una forma de realizar ambas acciones, podría ser la siguiente:
Get-Process
Stop-Process -processname notepad
Clear-History
¿Queremos borrar el histórico de comandos que hemos empleado hasta ahora? Nada tan fácil como utilizar la orden Clear-History. ¿Nos interesa borrar el histórico de un comando en concreto? Le añadiremos el ap?endice -Command. Por ejemplo, de esta forma:
Clear-History -Command *help*
Where-Object
Llegamos a uno de los cmdlets más importantes que tienes que conocer. Crea un filtro que controla los objetos que se van a pasar con una canalizacion de comandos. Filtra los objetos que recibe, bien como entrada canalizada o a traves del parametro “- inputobject“. Determina que objetos se van a pasar a traves de la canalizacion mediante la evaluacion de un bloque de script que puede incluir una referencia a un objeto que se va a filtrar. Si el resultado de la ejecucion es verdadero, el objeto que se va a procesar se pasa a traves de la canalizacion, en caso contrario, el objeto queda descartado.
Set-AuthenticodeSignature
Si deseamos mantener nuestro trabajo seguro y evitar posibles modificaciones, podemos echar mano del cmdlet Set-AuthenticodeSignature para añadir una firma Authenticode a un script o archivo.
-
A Fondo4 días ago
Lista: Top Influencers Linkedin de MCPRO: ¿quién lidera la conversación en español sobre tecnología en Linkedin?
-
A Fondo2 días ago
The Stargate Project: EE.UU invertirá 500.000 millones de dólares para infraestructura de IA
-
A Fondo7 días ago
Ericsson, Nokia, ASML y SAP piden medidas para garantizar el futuro tecnológico de la UE
-
Noticias4 días ago
IA en 2025: mayores capacidades y nuevos casos de uso