Guía de inicio rápido de PowerShell en Azure Cloud Shell

En este documento se detalla cómo usar PowerShell en Cloud Shell en Azure Portal.

Nota

También hay disponible una guía de inicio rápido de Bash en Azure Cloud Shell.

Inicio de Cloud Shell

  1. Haga clic en el botón Cloud Shell en la barra de navegación superior de Azure Portal

    Captura de pantalla en la que se muestra cómo iniciar Azure Cloud Shell desde Azure Portal.

  2. Seleccione el entorno PowerShell en el menú desplegable y estará en la unidad (Azure:) de Azure

    Captura de pantalla en la que se muestra cómo seleccionar el entorno de PowerShell para Azure Cloud Shell.

Ejecución de comandos de PowerShell

Ejecute los comandos habituales de PowerShell en Cloud Shell, como:

PS Azure:\> Get-Date

# Expected Output
Friday, July 27, 2018 7:08:48 AM

PS Azure:\> Get-AzVM -Status

# Expected Output
ResourceGroupName       Name       Location                VmSize   OsType     ProvisioningState  PowerState
-----------------       ----       --------                ------   ------     -----------------  ----------
MyResourceGroup2        Demo        westus         Standard_DS1_v2  Windows    Succeeded           running
MyResourceGroup         MyVM1       eastus            Standard_DS1  Windows    Succeeded           running
MyResourceGroup         MyVM2       eastus   Standard_DS2_v2_Promo  Windows    Succeeded           deallocated

Interacción con máquinas virtuales

Puede encontrar todas las máquinas virtuales de la suscripción actual mediante el directorio VirtualMachines.

PS Azure:\MySubscriptionName\VirtualMachines> dir

    Directory: Azure:\MySubscriptionName\VirtualMachines


Name       ResourceGroupName  Location  VmSize          OsType              NIC ProvisioningState  PowerState
----       -----------------  --------  ------          ------              --- -----------------  ----------
TestVm1    MyResourceGroup1   westus    Standard_DS2_v2 Windows       my2008r213         Succeeded     stopped
TestVm2    MyResourceGroup1   westus    Standard_DS1_v2 Windows          jpstest         Succeeded deallocated
TestVm10   MyResourceGroup2   eastus    Standard_DS1_v2 Windows           mytest         Succeeded     running

Invocación del script de PowerShell a través de máquinas virtuales remotas

Supongamos que tiene una máquina virtual llamada MyVM1. Usemos entonces Invoke-AzVMCommand para invocar un bloque de scripts de PowerShell en la máquina remota.

Enable-AzVMPSRemoting -Name MyVM1 -ResourceGroupname MyResourceGroup
Invoke-AzVMCommand -Name MyVM1 -ResourceGroupName MyResourceGroup -Scriptblock {Get-ComputerInfo} -Credential (Get-Credential)

También puede ir primero al directorio VirtualMachines y ejecutar Invoke-AzVMCommand de la manera siguiente.

PS Azure:\> cd MySubscriptionName\ResourceGroups\MyResourceGroup\Microsoft.Compute\virtualMachines
PS Azure:\MySubscriptionName\ResourceGroups\MyResourceGroup\Microsoft.Compute\virtualMachines> Get-Item MyVM1 | Invoke-AzVMCommand -Scriptblock {Get-ComputerInfo} -Credential (Get-Credential)

# You will see output similar to the following:

PSComputerName                                          : 65.52.28.207
RunspaceId                                              : 2c2b60da-f9b9-4f42-a282-93316cb06fe1
WindowsBuildLabEx                                       : 14393.1066.amd64fre.rs1_release_sec.170327-1835
WindowsCurrentVersion                                   : 6.3
WindowsEditionId                                        : ServerDatacenter
WindowsInstallationType                                 : Server
WindowsInstallDateFromRegistry                          : 5/18/2017 11:26:08 PM
WindowsProductId                                        : 00376-40000-00000-AA947
WindowsProductName                                      : Windows Server 2016 Datacenter
WindowsRegisteredOrganization                           :
 ...

Inicio de sesión interactivo en una máquina virtual remota

Puede usar Enter-AzVM para iniciar sesión de manera interactiva en una máquina virtual que se ejecuta en Azure.

PS Azure:\> Enter-AzVM -Name MyVM1 -ResourceGroupName MyResourceGroup -Credential (Get-Credential)

También puede navegar primero al directorio VirtualMachines y ejecute Enter-AzVM de la siguiente manera

PS Azure:\MySubscriptionName\ResourceGroups\MyResourceGroup\Microsoft.Compute\virtualMachines> Get-Item MyVM1 | Enter-AzVM -Credential (Get-Credential)

Detección de WebApps

Para navegar fácilmente por los recursos de aplicaciones web, acceda al directorio WebApps.

PS Azure:\MySubscriptionName> dir .\WebApps\

    Directory: Azure:\MySubscriptionName\WebApps

Name            State    ResourceGroup      EnabledHostNames                  Location
----            -----    -------------      ----------------                  --------
mywebapp1       Stopped  MyResourceGroup1   {mywebapp1.azurewebsites.net...   West US
mywebapp2       Running  MyResourceGroup2   {mywebapp2.azurewebsites.net...   West Europe
mywebapp3       Running  MyResourceGroup3   {mywebapp3.azurewebsites.net...   South Central US

# You can use Azure cmdlets to Start/Stop your web apps
PS Azure:\MySubscriptionName\WebApps> Start-AzWebApp -Name mywebapp1 -ResourceGroupName MyResourceGroup1

Name           State    ResourceGroup        EnabledHostNames                   Location
----           -----    -------------        ----------------                   --------
mywebapp1      Running  MyResourceGroup1     {mywebapp1.azurewebsites.net ...   West US

# Refresh the current state with -Force
PS Azure:\MySubscriptionName\WebApps> dir -Force

    Directory: Azure:\MySubscriptionName\WebApps

Name            State    ResourceGroup      EnabledHostNames                  Location
----            -----    -------------      ----------------                  --------
mywebapp1       Running  MyResourceGroup1   {mywebapp1.azurewebsites.net...   West US
mywebapp2       Running  MyResourceGroup2   {mywebapp2.azurewebsites.net...   West Europe
mywebapp3       Running  MyResourceGroup3   {mywebapp3.azurewebsites.net...   South Central US

SSH

Para realizar la autenticación en servidores o máquinas virtuales mediante SSH, genere el par de claves pública y privada en Cloud Shell y publique la clave pública en authorized_keys en la máquina remota, por ejemplo, /home/user/.ssh/authorized_keys.

Nota

Puede crear las claves pública y privada de SSH mediante ssh-keygen y publicarlas en $env:USERPROFILE\.ssh en Cloud Shell.

Uso de SSH

Siga las instrucciones que se indican aquí para crear una nueva configuración de máquina virtual mediante cmdlets de Azure PowerShell. Antes de llamar a New-AzVM para iniciar la implementación, agregue la clave pública SSH a la configuración de la máquina virtual. La máquina virtual recién creada contendrá la clave pública en la ubicación ~\.ssh\authorized_keys, lo cual permitirá una sesión SSH sin credenciales en la máquina virtual.

# Create VM config object - $vmConfig using instructions on linked page above

# Generate SSH keys in Cloud Shell
ssh-keygen -t rsa -b 2048 -f $HOME\.ssh\id_rsa 

# Ensure VM config is updated with SSH keys
$sshPublicKey = Get-Content "$HOME\.ssh\id_rsa.pub"
Add-AzVMSshPublicKey -VM $vmConfig -KeyData $sshPublicKey -Path "/home/azureuser/.ssh/authorized_keys"

# Create a virtual machine
New-AzVM -ResourceGroupName <yourResourceGroup> -Location <vmLocation> -VM $vmConfig

# SSH to the VM
ssh azureuser@MyVM.Domain.Com

Enumeración de los comandos disponibles

En la unidad Azure, escriba Get-AzCommand para obtener comandos de Azure específicos del contexto.

De manera alternativa, siempre puede usar Get-Command *az* -Module Az.* para saber cuáles son los comandos disponibles de Azure.

Instalación de módulos personalizados

Puede ejecutar Install-Module para instalar módulos desde la Galería de PowerShell.

Get-Help

Escriba Get-Help para obtener información sobre PowerShell en Azure Cloud Shell.

Get-Help

En un comando específico, todavía puede ejecutar Get-Help seguido de un cmdlet.

Get-Help Get-AzVM

Uso de Azure Files para almacenar los datos

Para crear un script, diga helloworld.ps1 y guárdelo en clouddrive para usarlo en distintas sesiones de shell.

cd $HOME\clouddrive
# Create a new file in clouddrive directory
New-Item helloworld.ps1
# Open the new file for editing
code .\helloworld.ps1
# Add the content, such as 'Hello World!'
.\helloworld.ps1
Hello World!

La próxima vez que use PowerShell en Cloud Shell, el archivo helloworld.ps1 existirá en el directorio $HOME\clouddrive que monta el recurso compartido de Azure Files.

Uso de un perfil personalizado

Puede crear los perfiles de PowerShell profile.ps1 o Microsoft.PowerShell_profile.ps1 para personalizar el entorno de PowerShell. Guárdelo en $profile.CurrentUserAllHosts (o $profile.CurrentUserAllHosts), de modo que se pueda cargar en cada sesión de PowerShell en Cloud Shell.

Para saber cómo crear un perfil, consulte la información sobre los perfiles.

Uso de Git

Para clonar un repositorio Git en Cloud Shell, debe crear un token de acceso personal y usarlo como el nombre de usuario. Una vez que tenga el token, clone el repositorio de la manera siguiente:

  git clone https://<your-access-token>@github.com/username/repo.git

Salga del shell

Escriba exit para finalizar la sesión.