Una de las utilidades más especiales desarrollada por Microsoft es Windows PowerShell el cual es un shell de línea de comandos diseñado especialmente para administradores de sistemas gracias a sus múltiples prestaciones de soporte.
Windows PowerShell incluye un indicador interactivo y un entorno de scripting que puede ser usado tanto de forma independiente o en combinación con otros scripts.
Windows PowerShell está construido sobre el Common Language Runtime (CLR) de .NET Framework y .NET Framework, con lo cual acepta y devuelve objetos de .NET Framework., de esta forma, tenemos un cambio en el entorno que nos brinda herramientas y métodos completamente nuevos y modernos para la administración y configuración de Windows.
Windows PowerShell está basado en el concepto de un cmdlet el cual es una herramienta de línea de comandos simple, de función única integrada en el Shell y será posible usar cada cmdlet por separado o en conjunto con otros para sacar su máximo beneficio.
Hasta ahora, en las ediciones de Windows 10 hemos visto el uso de Windows PowerShell con el entorno grafico mediante el cual explotamos al máximo el uso de los cmdlets:
Pues bien, Microsoft ha desarrollado a través de GitHub la nueva plataforma PowerShell Core, actualmente en su versión 6.0, la cual es compatible para sistemas Windows, macOS y Linux siendo de código abierto y creada para entornos heterogéneos y la nube híbrida aumentando así sus niveles de gestión y administración.
1. Diferencias entre Windows PowerShell y PowerShell Core
En este punto muchos quizás nos preguntamos qué hay de diferente entre estas dos ediciones, bien, Solvetic hará un comparativo de lo que tenemos en ambas utilidades.
- Debido a su dependencia de .NET Framework, Windows PowerShell solo está disponible en sistemas operativos Windows.
- Windows PowerShell se inicia como powershell.exe
- Las versiones publicadas de Windows PowerShell hasta hoy incluyen 1.0, 2.0, 3.0, 4.0, 5.0 y 5.1.
- Windows PowerShell está disponible como un componente integrado en el cliente de Windows y Windows Server.
- En Windows PowerShell 5.0 o 5.1, $ PSVersionTable.PSEdition se establece en Desktop.
- Cualquier uso de la funcionalidad basada en .NET, como cmdlets C #, Add-Type y la invocación de métodos .NET estáticos, está basada en el tiempo de ejecución de .NET Framework.
- Continúa siendo compatible a través de correcciones de errores críticos en las versiones más recientes de Windows y Windows Server.
- PowerShell Core es multiplataforma, está disponible en Windows, macOS y Linux, debido a su diseño de .NET Core.
- En PowerShell Core, $ PSVersionTable.PSEdition se establece en Core.
- PowerShell Core se inicia como pwsh.exe en Windows y pwsh en macOS y Linux
- Cualquier uso de funcionalidad basada en .NET, como cmdlets C #, Add-Type y la invocación de métodos .NET estáticos, dependen del tiempo de ejecución de .NET Core.
- Windows 7, 8.1, and 10
- Windows Server 2008 R2, 2012 R2, 2016
- Windows Server Semi-Annual Channel
- Ubuntu 14.04, 16.04, y 17.04
- Debian 8.7+, y 9
- CentOS 7
- RedHat Enterprise Linux 7
- OpenSUSE 42.2
- Fedora 25, 26
- macOS 10.12+
- Arch Linux
- Kali Linux
- AppImage
- Windows ARM32/ARM64 (En estado de pruebas)
- Raspbian (Stretch) (En estado de pruebas)
- CimCmdlets
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- Microsoft.WSMan.Management
- PackageManagement
- PowerShellGet
- PSDesiredStateConfiguration
- PSDiagnostics
- PSReadLine
2. Novedades de PowerShell Core 6.0
Con esta nueva edición de PowerShell Core 6.0 tendremos una serie de novedades pensadas en optimizar las tareas de administración, control, soporte y automatización, algunas de ellas son:
- Se añadió soporte para globbing de comandos nativos en plataformas Unix.
- La funcionalidad more respeta el $PAGER de Linux lo cual significa que podremos usar comodines con binarios o comandos nativos.
- La barra inclinada invertida se omite automáticamente cuando se trata de argumentos de comandos nativos.
- Se añadió el paquete man-page.
- En sistemas macOS, PowerShell Core hace uso de las API os_log nativas para iniciar sesión en el sistema de registro unificado de Apple. En Linux, PowerShell usa Syslog.
- Las rutas asignadas a cmdlets son ahora slash-agnostic, tanto / y \ funcionan como separador de directorio.
- Soporte para nombres de archivos y carpetas que contienen el carácter de dos puntos en Unix.
- Soporte para nombres de guiones o rutas completas que tienen comas.
- Detecta cuándo el parámetro -LiteralPath se usa para suprimir la expansión de comodines para los cmdlets de navegación.
- Cambió el primer parámetro posicional de Command a -File.
- PowerShell Core acepta el modificador -i (o -Interactive) para indicar un shell interactivo.
- Se eliminaron los parámetros -importsystemmodules y -psconsoleFile desde pwsh.exe
- Mensajes de error de argumento no válidos para -File y -Command and códigos de salida coherentes con los estándares de Unix
- PowerShell Core agrega soporte para Docker
- El protocolo de conexión remota de PowerShell (PSRP) ahora funciona con el protocolo Secure Shell (SSH) además del PSRP basado en WinRM
- La codificación predeterminada es UTF-8
- Soporte de ampersand
- Se agregó Get-Uptime a Microsoft.PowerShell.Utility
- Agrega soporte de autenticación de certificado para cmdlets web
- Se añadió soporte para encabezados de contenido a cmdlets web
- Se mejoró la inferencia de tipo en la finalización de tabulación en función de los valores de las variables de tiempo de ejecución de las ordenes
- Se habilitó el uso del proveedor del sistema de archivos desde una ruta UNC
A continuación, veremos cómo instalar PowerShell Core en las diferentes ediciones de sistemas operativos compatibles.
3. Instalar PowerShell Core en Windows 10
Para instalar la utilidad PowerShell Core en un cliente de Windows o Windows Server como Windows 7 SP1, Server 2008 R2 y posteriores, será necesario descargar el paquete de MSI desde la página oficial de GitHub en el siguiente enlace:
Allí seleccionaremos el paquete que mejor se adapte a nuestra versión de Windows, en este caso descargaremos el paquete de win-x64. Una vez descargado, daremos doble clic en el instalador y seguimos las instrucciones:
Pulsamos en “Next” y aceptaremos los términos de la licencia:
De nuevo pulsamos en Next y ahora definimos la ruta donde se ha de instalar PowerShell Core en Windows 10:
En la próxima ventana podemos iniciar el proceso de instalación de la utilidad:
Una vez instalado veremos lo siguiente:
Podremos cerrar el asistente y acceder a PowerShell Core desde el menú Inicio:
Una vez accedamos podremos trabajar con PowerShell Core según sean las necesidades de gestión en el momento:
4. Instalar PowerShell Core en Linux
En ambientes Linux, PowerShell Core es compatible con las siguientes distribuciones:
- Ubuntu 14.04
- Ubuntu 16.04
- Ubuntu 17.04
- Debian 8
- Debian 9
- CentOS 7
- Red Hat Enterprise Linux (RHEL) 7
- OpenSUSE 42.2
- Fedora 25
- Fedora 26
- Arch Linux
- Linux AppImage
En este ejemplo usaremos Ubuntu 17.04 pero Solvetic explicara el proceso para las demás distribuciones de Linux.
En el caso de Ubuntu 17.04 en primer lugar, importaremos las claves del repositorio GPG ejecutando el siguiente comando:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add –
Luego, ejecutaremos la siguiente línea para registrar el repositorio de Ubuntu en Microsoft:
curl https://packages.microsoft.com/config/ubuntu/17.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
Posteriormente, actualizaremos la lista de los paquetes:
sudo apt-get update
Instalamos PowerShell Core ejecutando la siguiente línea:
sudo apt-get install -y powershell
Una vez instalado ejecutamos PowerShell Core con el siguiente comando:
pwsh
Ahora podremos llevar a cabo acciones normales de gestión con PowerShell:
Podemos ver los respectivos resultados:
Adicional a este paso, otra forma de instalar PowerShell en Ubuntu 17.04 es descargar el paquete "powershell_6.0.0-rc-1.ubuntu.17.04_amd64.deb" de la página de GitHub indicada en la parte superior y luego ejecutar las siguientes líneas:
sudo dpkg -i powershell_6.0.0-rc-1.ubuntu.17.04_amd64.deb sudo apt-get install -f
Para desinstalar PowerShell Core en Ubuntu 17.04 ejecutamos el siguiente comando:
sudo apt-get remove powershell
Ahora, veremos los comandos a usar en las otras distribuciones de Linux.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add – (importación de las claves GPG) curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list (registro del repositorio de Ubuntu en Microsoft) sudo apt-get update (actualización de los paquetes) sudo apt-get install -y powershell (Instalación de PowerShell Core) pwsh (Inicio de PowerShell Core)Alternativamente, podemos descargar el paquete "powershell_6.0.0-rc-1.ubuntu.16.04_amd64.deb" del sitio web oficial y luego ejecutar las siguientes líneas:
sudo dpkg -i powershell_6.0.0-rc-1.ubuntu.16.04_amd64.deb sudo apt-get install -fPara desinstalar PowerShell Core ejecutamos:
sudo apt-get remove powershell
sudo apt-get update sudo apt-get install curl gnupg apt-transport-httpsLuego importamos las claves públicas de GPG:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add –Registramos el producto Microsoft:
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/microsoft.list'Actualizamos los productos:
sudo apt-get updateInstalamos PowerShell Core:
sudo apt-get install -y powershellEjecutamos la utilidad:
PwshAl igual que la distribución anterior, podemos descargar el paquete "powershell_6.0.0-rc-1.debian.9_amd64.deb" y luego ejecutar lo siguiente:
sudo dpkg -i powershell_6.0.0-rc-1.debian.9_amd64.deb sudo apt-get install -fPara desinstalar PowerShell Core ejecutamos:
sudo apt-get remove powershell
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repoProcedemos a instalar PowerShell Core:
sudo yum install -y powershellEjecutamos la utilidad:
pwshOpcionalmente podemos descargar el paquete "powershell-6.0.0_rc-1.rhel.7.x86_64.rpm" del sitio web oficial y luego ejecutamos:
sudo yum install powershell-6.0.0_rc-1.rhel.7.x86_64.rpmO podemos instalarlo directamente usando la siguiente línea:
sudo yum install https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-rc/powershell-6.0.0_rc-1.rhel.7.x86_64.rpmPara eliminarlo ejecutamos lo siguiente:
sudo yum remove powershell
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repoLuego instalaremos PowerShell Core con el siguiente comando:
sudo yum install -y powershellEjecutamos la utilidad:
pwshOtra alternativa es descargar el paquete "powershell-6.0.0_rc-1.rhel.7.x86_64.rpm" y luego ejecutar:
sudo yum install powershell-6.0.0_rc-1.rhel.7.x86_64.rpmO directamente:
sudo yum install https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-rc/powershell-6.0.0_rc-1.rhel.7.x86_64.rpmPodemos eliminar PowerShell Core ejecutando:
sudo yum remove powershell
sudo rpm --import https://packages.microsoft.com/keys/microsoft.ascLuego registraremos el repositorio de RedHat:
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repoActualizamos la lista de productos:
sudo dnf updateInstalamos componentes del sistema:
sudo dnf install compat-openssl10Procedemos a instalar PowerShell Core:
sudo dnf install -y powershellIniciamos la utilidad:
pwshEl otro método es descargar el paquete "powershell-6.0.0_rc-1.rhel.7.x86_64.rpm" y luego llevar a cabo la ejecución de las siguientes líneas:
sudo dnf update sudo dnf install compat-openssl10 sudo dnf install powershell-6.0.0_rc-1.rhel.7.x86_64.rpmPara eliminar PowerShell Core en Fedora 26 usaremos la siguiente línea:
sudo dnf remove powershell
Así tenemos las diferentes opciones para ambientes Linux.
5. Instalar PowerShell Core macOS High Sierra
Para el caso de macOS High Sierra contamos con dos opciones de instalación de PowerShell Core.
La primera es usando HomeBrew el cual es un gestor de paquetes para macOS, en caso de no contar con HomeBrew podemos instalarlo ejecutando la siguiente línea en la terminal de macOS High Sierra.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Una vez instalado HomeBrew ejecutaremos la siguiente línea:
brew tap caskroom/cask
Cask es una utilidad que nos permite instalar paquetes adicionales en macOS. Una vez instalado ejecutaremos la siguiente línea para instalar PowerShell Core:
brew cask install powershell
Ingresaremos nuestra contraseña y esperamos que el proceso de descarga concluya:
Alternativamente, podemos descargar el paquete powershell-6.0.0-rc-osx.10.12-x64.pkg del sitio web oficial y una vez descargado, daremos doble clic sobre el dónde se desplegará el siguiente asistente:
Allí pulsamos en Continuar y seguiremos los pasos del asistente:
Si no deseamos usar el asistente gráfico, podremos usar la terminal ejecutando el siguiente comando:
sudo installer -pkg powershell-6.0.0-rc-osx.10.12-x64.pkg -target /
Una vez instalado podremos ejecutar el comando pwsh para acceder a PowerShell Core:
Allí llevaremos a cabo la ejecución de los comandos normales de gestión:
Para desinstalar PowerShell Core en macOS High Sierra podemos usar alguna de las siguientes opciones:
brew cask uninstall powershell sudo rm -rf /usr/local/bin/pwsh /usr/local/microsoft/powershellComo vemos, PowerShell Core es una utilidad dinámica, simple y potente que nos ayudara a llevar a cabo todo tipo de tareas de soporte en los sistemas operativos más usados en la actualidad.