Instalación y configuración de Windows Terminal y Powershell

Microsoft se está poniendo un poco las pilas, y entre otros muchos proyectos, lanzó hace unos meses Windows Terminal, una nueva terminal en Windows con unas funcionalidades que eran necesarias desde hace mucho tiempo (pestañas, perfiles, integración con WSL, soporte Unicode y UTF-8, temas, estilos, etc.).

Aunque no uso mucho Windows, en ocasiones tengo que iniciarlo, y determinadas tareas de consola se hacen bastante pesadas. Con Windows Terminal, la verdad es que la sensación a la hora de trabajar es bastante cómoda. Por eso, he decidido crear este post para futuras referencias, así como con instrucciones para instalar utilidades útiles a la hora de usar Windows Terminal.

En primer lugar, para instalar Windows Terminal, simplemente ejecutaremos este comando desde una consola de Powershell estándar, con permisos de administrador (teniendo el gestor de paquetes Chocolatey instalado previamente):

choco install microsoft-windows-terminal

Como alternativa, si no podemos instalar Windows Terminal porque el sistema no cumple los requisitos (es necesaria una compilación de Windows Windows 10 1903, build 18362, o posterior), podemos optar por usar ConEmu o Cmder:

choco install conemu
choco install cmder

También instalaremos gsudo, que será necesario en pasos posteriores:

choco install gsudo
Es posible que haya que cerrar y volver a abrir Windows Terminal después de cada instalación/configuración para que se recarguen variables de entorno o configuraciones que se van modificando.

Tras instalar Windows Terminal, lo abriremos, y para añadir el perfil para abrir una consola de Powershell como administrador, modificaremos el fichero de opciones, abriéndolo desde la opción “Settings” de Windows Terminal, y añadiremos el siguiente bloque dentro de la sección “profile”:

{
    "icon" : "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
    "name": "Windows PowerShell (admin)",
    "commandline": "gsudo.exe powershell",
    "fontFace" : "Consolas",
    "fontSize" : 10,
    "historySize" : 9001,
    "startingDirectory" : "%USERPROFILE%"
}

También podemos crear un perfil para conectarnos directamente a una máquina por SSH (ver cómo instalar el cliente nativo de SSH de Windows más abajo):

{
    "icon" : "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png",
    "name" : "Vagrant",
    "commandline" : "ssh -i ... user@domain.com",
    "fontFace" : "Consolas",
    "fontSize" : 10,
    "closeOnExit" : true,
    "startingDirectory" : "%USERPROFILE%"
}

En caso de ConEmu o Cmder, simplemente crearemos una nueva tarea, con el mismo comando especificado para Windows Terminal (ssh -i ... user@domain.com).

Tras esto haremos unas configuraciones mínimas para poder usar Powershell decentemente:

  • Crear el fichero de perfil si no existe
  • Instalar PowerShellGet, necesario en otros comandos
if (!(Test-Path $profile)) { New-Item -Path $profile -ItemType "file" }
gsudo Install-Module -Name PowerShellGet -Force

Podemos instalar una serie de utilidades en Windows, para intentar hacer más fácil el cambio entre Linux y Windows; por ejemplo, para instalar Git:

gsudo choco install git.install --params "/GitAndUnixToolsOnPath /WindowsTerminal /NoShellIntegration /NoGitLfs /SChannel /NoAutoCrlf"

Instalar PSReadLine:

Install-Module PSReadLine -AllowPrerelease -Force

$line = "Import-Module PSReadLine"
if (!(Select-String -Path $profile -Pattern $line -SimpleMatch)) { Add-Content -Path $profile -Value $line }
Invoke-Expression "$line"

$line = "Set-PSReadLineOption -EditMode Emacs"
if (!(Select-String -Path $profile -Pattern $line -SimpleMatch)) { Add-Content -Path $profile -Value $line }
Invoke-Expression "$line"

Instalar el cliente nativo de SSH de Windows:

gsudo Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
gsudo Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Si no es posible usar el cliente nativo de SSH de Windows, podemos usar el cliente SSH que instala automáticamente Git (que ya hemos instalado en un paso anterior).

Añadir posh-sshell y crear el archivo de configuración de SSH por defecto si no existe:

Install-Module posh-sshell -Scope CurrentUser
Import-Module posh-sshell
Add-PoshSshellToProfile -AllHosts
if (!(Test-Path $HOME/.ssh)) { md $HOME/.ssh }
if (!(Test-Path $HOME/.ssh/config)) { New-Item -path $HOME/.ssh -name config -type "file" }

Añadir posh-git:

gsudo choco install poshgit

Instalar curl y eliminar el alias:

$line = "if (Test-Path Alias:\curl) { Remove-Item alias:\curl }"
if (!(Select-String -Path $profile -Pattern $line -SimpleMatch)) { Add-Content -Path $profile -Value $line }
Invoke-Expression "$line"

Instalar Hugo (para gestionar este blog):

gsudo choco install hugo-extended

Instalar Python y pipenv:

gsudo choco install python
pip install pipenv

Instalar la CLI de AWS v1:

pip install awscli
comments powered by Disqus

Relacionado