Microsoft PowerShell se ha considerado tradicionalmente como un producto exclusivo de Windows, pero ya no. A partir de PowerShell v6, todas las capacidades de PowerShell ahora están disponibles en varias plataformas, siendo Linux la más popular.
En este tutorial, aprenderá cómo comenzar desde cero instalando PowerShell en Ubuntu (otras distribuciones de Linux son similares), cómo ejecutar comandos e incluso instalar algunos módulos.
¡Empecemos!
Requisitos
Este tutorial contendrá varias demostraciones. Si desea seguirnos, asegúrese de tener lo siguiente:
- Cualquier distribución de Linux compatible:este tutorial usa Peppermint 10, que se basa en Ubuntu 18.04 (LTS).
- Una cuenta con acceso raíz.
Actualización del repositorio de paquetes
Antes de pasar a instalar PowerShell en Linux, primero debe actualizar la lista de repositorios del administrador de paquetes apt. Algunas distribuciones de Linux usan el administrador de paquetes apt para instalar paquetes apt; PowerShell es uno de ellos.
Para asegurarse de que apt pueda encontrar el paquete de PowerShell y cualquier dependencia durante la descarga, primero debe actualizar la lista de repositorios de paquetes de apt. Para hacerlo, ejecuta [apt update](
.
sudo apt update
Instalación de PowerShell en Linux
Ahora que ha actualizado los repositorios de paquetes, es hora de instalar PowerShell en Linux. Dado que este tutorial utiliza una distribución basada en Ubuntu, tiene dos formas diferentes de instalar PowerShell; usando paquetes instantáneos o a través de .NET SDK.
Instalación de PowerShell a través de Snap Packages
La forma más fácil de instalar PowerShell en Ubuntu es a través de instantáneas. Las instantáneas son paquetes que funcionan en varias versiones y distribuciones de Linux.
Para instalar PowerShell en Linux a través de un paquete instantáneo, abra una terminal y ejecute el snap install
Comando Linux con sudo
derechos para usar el nombre del paquete instantáneo de powershell
.
De forma predeterminada, los paquetes instantáneos tienen un alcance limitado por motivos de seguridad. Especificando el
--classic
El parámetro le permite realizar cambios en su sistema fuera del entorno limitado de seguridad.
sudo snap install powershell --classic
Instalación de PowerShell a través del SDK de .NET
1. A veces encontrará que el paquete instantáneo de PowerShell no contiene la última versión de PowerShell. Cuando eso suceda, siempre puede optar por la ruta .NET SDK que siempre se actualizará.
PowerShell está empaquetado con .NET Core, por lo que cuando instala .NET SDK, ¡también obtiene PowerShell!
Descargue e instale el último SDK de .NET disponible ejecutando el siguiente comando usando el apt
gerente de empaquetación. En el momento de escribir este artículo, el paquete SDK de .NET más reciente disponible es v5.0.8. Puede consultar la última versión disponible aquí.
sudo apt install dotnet-sdk-5.0
2. Ahora, instale PowerShell a través de dotnet
aplicación usando dotnet tool install
. El dotnet tool
El comando especifica un paquete NuGet en el que se empaqueta PowerShell.
Especificando el --global
opción, dotnet
instala el paquete de PowerShell en ~\.dotnet\tools y asegura que el directorio esté en la RUTA del sistema para que pueda ejecutarlo desde cualquier lugar.
dotnet tool install --global PowerShell
Ejecución de comandos básicos de PowerShell en Linux
Ahora que tiene PowerShell instalado en Linux, ¿qué sigue? Comencemos ejecutando algunos comandos básicos. Para iniciar PowerShell, simplemente ejecute pwsh
y accederá a la consola interactiva de PowerShell.
Al ser un lenguaje de secuencias de comandos multiplataforma, PowerShell en Linux admite todos los comandos comúnmente conocidos de CMD y el shell de línea de comandos de Linux, como sudo apt update
. ¡No es necesario abrir una terminal Bash!
A partir de ahora, puede ejecutar miles de comandos integrados de PowerShell. Mientras lo hace, verifique qué versión de PowerShell está instalada usando $PSVersionTable
. Deberías ver que PSEdition se muestra como Core y Plataforma es Unix .
Una vez que haya terminado en la consola de PowerShell, salga ejecutando exit
dominio. Este comando lo llevará de regreso a su terminal Bash.
Limitaciones de PowerShell en Linux
El hecho de que pueda instalar PowerShell y ejecutar comandos en él no significa necesariamente que pueda hacer todo lo posible en Windows. Después de todo, al ser Linux de código abierto, es un sistema operativo completamente diferente y algunos comandos no estarán disponibles para funciones que no están disponibles en Linux.
Windows -ne Linux
Por ejemplo, dado que Linux no tiene un registro, no verá ninguna unidad PowerShell. El Get-PSDrive
El cmdlet seguirá estando disponible, pero solo devolverá los volúmenes de almacenamiento de Linux montados y otras unidades PS estándar. Puede ver un ejemplo a continuación.
Get-PSDrive | Format-Table -Auto
A diferencia de Microsoft Windows, Linux no tiene Common Information Model (CIM) ni Windows Management Instrumentation (WMI). Ambos ayudan a proporcionar información sobre la administración de dispositivos y aplicaciones al sistema operativo Windows.
Puede ver a continuación que el cmdlet de Windows PowerShell Get-CimInstance
no está disponible en PowerShell en Linux.
Get-CimInstance -ClassName Win32_BIOS
Pero si intentas usar Get-CimInstance
en Windows PowerShell, verá a continuación que funciona como se esperaba.
Sin trabajos programados
Otro inconveniente de PowerShell en Linux es la falta de trabajos programados. Los trabajos programados son una característica útil de Windows PowerShell que le permite ejecutar tareas en segundo plano a través del Programador de tareas de Windows.
Para crear un trabajo programado en Windows PowerShell, debe registrarse el trabajo a través del Register-ScheduledJob
cmdlet. Verá un ejemplo de cómo copiar algunos libros de trabajo de Excel que funcionan en Windows PowerShell a continuación. Notarás que el Register-ScheduledJob
no se encuentra el cmdlet.
Aunque no puede programar un trabajo, aún puede invocar trabajos en segundo plano usando el Start-Job
dominio. El Start-Job
cmdlet le permite ejecutar trabajos en segundo plano en PowerShell para ejecutar una tarea sin interacción con la sesión actual.
Tal vez le gustaría enumerar todos los archivos en /var/backups pero hazlo en segundo plano. Podría crear el comando para ejecutar en un ScriptBlock
y crea un trabajo llamado GetAllBackupFiles
invocar con Start-Job
, como se muestra a continuación.
Start-Job -Name GetAllBackupFiles -ScriptBlock {Get-ChildItem /var/backups -Recurse}
Una vez que se inicia el trabajo en segundo plano, puede recibir el resultado de ese trabajo utilizando el Retrieve-Job
cmdlet especificando el -Name
que proporcionó al iniciarlo.
Retrieve-Job -Name GetAllBackupFiles
Trabajar con módulos de PowerShell en Linux
Un concepto importante en Windows PowerShell es el módulo de PowerShell. Los módulos de PowerShell son grupos de comandos creados como "paquetes" creados tanto por Microsoft como a través de la comunidad de PowerShell.
Buscar módulos instalados
De forma predeterminada, PowerShell en Linux, como Windows, instala varios módulos. Encuentre todos esos módulos ejecutando el Get-Module
comando, como se muestra a continuación. El ListAvailable
el parámetro le dice a Get-Module
para devolver todos módulos en el sistema de archivos; no solo módulos cargados.
Get-Module -ListAvailable
Puede ver a continuación que el Pester el módulo está instalado en /root/.local/share/powershell/Modules que es la ubicación del usuario para los módulos de PowerShell. Aprenderá a instalar módulos en una próxima sección.
Puede ver cada ubicación para instalar módulos mirando el PSModulePath
variable de entorno, como se muestra a continuación. Dado que el valor de $env:PSModulePath
es una cadena, el tutorial usa el split
operador para dividir la cadena en dos puntos (no punto y coma como Windows) para mostrar cada ruta en una línea diferente.
$env:PSModulePath -split ':'
Instalación de módulos de PowerShell en Linux
Aunque PowerShell en Linux viene con varios módulos ya instalados, es probable que necesite más funciones. Cuando eso suceda, puede aprovechar la Galería de PowerShell. La Galería de PowerShell es un repositorio de miles de módulos que funcionan tanto en Windows como en Linux.
Usando el Install-Module
cmdlet, puede instalar módulos en Linux al igual que en Windows. Pero primero, debe encontrar el módulo que está buscando usando Find-Module
.
Supongamos que le gustaría ejecutar algunas pruebas de Pester utilizando el popular marco de pruebas de Pester. Pester viene empaquetado en un módulo. Verifique si el módulo Pester está disponible en la Galería de PowerShell usando el Find-Module
cmdlet.
Find-Module Pester
Puedes ver debajo que Find-Module
encontró el módulo Pester disponible.
Una vez que haya verificado que el módulo Pester está disponible, instálelo usando el Install-Module
cmdlet que especifica el Name
del módulo.
Install-Module -Name Pester
Cuando ejecutas Install-Module
, PowerShell le preguntará acerca de un repositorio que no es de confianza porque el repositorio está marcado como no confiable. Para realizar pruebas, esta advertencia no es motivo de preocupación, así que escriba A para confirmar.
Una vez que se haya instalado el módulo, ahora ejecute el Get-InstalledModule
cmdlet y verá que Pester se ha instalado y sus comandos ahora están disponibles.
También verás eso usando el Get-Command
cmdlet, también puede encontrar todos los comandos dentro del Pester
módulo, como se muestra a continuación.
Get-Command -Module Pester
Ejecución de scripts de PowerShell desde Bash
Para concluir este tutorial, terminemos con la ejecución de scripts de PowerShell desde Bash. A lo largo de este tutorial, ha estado ejecutando comandos de PowerShell de forma interactiva dentro de una consola de PowerShell. Si tiene un script de PowerShell que debe ejecutar, no es necesario acceder a la consola de PowerShell. En su lugar, puede ejecutar el script directamente desde Bash.
Para demostrar cómo ejecutar un script de PowerShell desde Bash, abra su editor de texto Linux favorito, pegue el siguiente comando y guarde el archivo como DrivesInformation.ps1 . Este script simplemente enumerará todas las unidades PS.
Get-PSDrive
En su terminal Bash, en lugar de ejecutar pwsh
, presionando Enter y luego ejecutando el script dentro de la consola de PowerShell, invoque el script directamente desde Bash. Para hacer esto, ejecute pwsh
de nuevo, pero esta vez especifica el script de PowerShell que acabas de crear, como se muestra a continuación.
Verá que recibe el mismo resultado que recibiría dentro de la sesión interactiva de PowerShell directamente en su terminal Bash.
pwsh /home/tex/DrivesInformation.ps1
Conclusión
¡Ahora debería tener un buen comienzo para ejecutar PowerShell en Linux! ¡Ahora depende de usted comenzar a aprender más sobre PowerShell y automatizar todo lo que pueda!