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

En este documento se detalla cómo usar PowerShell en Cloud Shell en Azure Portal.This document details how to use the PowerShell in Cloud Shell in the Azure portal.

Nota

También hay disponible una guía de inicio rápido de Bash en Azure Cloud Shell.A Bash in Azure Cloud Shell Quickstart is also available.

Nota

Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Aún puede usar el módulo de AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para más información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obtener instrucciones sobre la instalación del módulo Az, consulte Instalación de Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Inicio de Cloud ShellStart Cloud Shell

  1. Haga clic en el botón Cloud Shell en la barra de navegación superior de Azure PortalClick on Cloud Shell button from the top navigation bar of the Azure portal

  2. Seleccione el entorno PowerShell en el menú desplegable y estará en la unidad (Azure:) de AzureSelect the PowerShell environment from the drop-down and you will be in Azure drive (Azure:)

Ejecución de comandos de PowerShellRun PowerShell commands

Ejecute los comandos habituales de PowerShell en Cloud Shell, como:Run regular PowerShell commands in the Cloud Shell, such as:

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
  1. Enumere todas las suscripciones de la unidad Azure.List all your subscriptions from Azure drive

    PS Azure:\> dir
    
  2. cd a la suscripción de su preferenciacd to your preferred subscription

    PS Azure:\> cd MySubscriptionName
    PS Azure:\MySubscriptionName>
    
  3. Vea todos los recursos de Azure en la suscripción actualView all your Azure resources under the current subscription

    Escriba dir para mostrar varias vistas de los recursos de Azure.Type dir to list multiple views of your Azure resources.

    PS Azure:\MySubscriptionName> dir
    
        Directory: azure:\MySubscriptionName
    
    Mode Name
    ---- ----
    +    AllResources
    +    ResourceGroups
    +    StorageAccounts
    +    VirtualMachines
    +    WebApps
    

Vista AllResourcesAllResources view

Escriba dir en el directorio AllResources para ver los recursos de Azure.Type dir under AllResources directory to view your Azure resources.

PS Azure:\MySubscriptionName> dir AllResources

Exploración de grupos de recursosExplore resource groups

Puede ir al directorio ResourceGroups y encontrar máquinas virtuales dentro de un grupo de recursos específicos.You can go to the ResourceGroups directory and inside a specific resource group you can find virtual machines.

PS Azure:\MySubscriptionName> cd ResourceGroups\MyResourceGroup1\Microsoft.Compute\virtualMachines

PS Azure:\MySubscriptionName\ResourceGroups\MyResourceGroup1\Microsoft.Compute\virtualMachines> dir


    Directory: Azure:\MySubscriptionName\ResourceGroups\MyResourceGroup1\Microsoft.Compute\virtualMachines


VMName    Location   ProvisioningState VMSize          OS            SKU             OSVersion AdminUserName  NetworkInterfaceName
------    --------   ----------------- ------          --            ---             --------- -------------  --------------------
TestVm1   westus     Succeeded         Standard_DS2_v2 WindowsServer 2016-Datacenter Latest    AdminUser      demo371
TestVm2   westus     Succeeded         Standard_DS1_v2 WindowsServer 2016-Datacenter Latest    AdminUser      demo271

Nota

Es posible que observe que la segunda vez que escribe dir, Cloud Shell muestra los elementos mucho más rápido.You may notice that the second time when you type dir, the Cloud Shell is able to display the items much faster. Esto se debe a que los elementos secundarios se almacenan en la memoria caché para brindar una mejor experiencia del usuario.This is because the child items are cached in memory for a better user experience. Sin embargo, siempre puede usar dir -Force para obtener datos actualizados.However, you can always use dir -Force to get fresh data.

Para navegar fácilmente por los recursos de almacenamiento, acceda al directorio StorageAccounts.By entering into the StorageAccounts directory, you can easily navigate all your storage resources

PS Azure:\MySubscriptionName\StorageAccounts\MyStorageAccountName\Files> dir

    Directory: Azure:\MySubscriptionNameStorageAccounts\MyStorageAccountName\Files

Name          ConnectionString
----          ----------------
MyFileShare1  \\MyStorageAccountName.file.core.windows.net\MyFileShare1;AccountName=MyStorageAccountName AccountKey=<key>
MyFileShare2  \\MyStorageAccountName.file.core.windows.net\MyFileShare2;AccountName=MyStorageAccountName AccountKey=<key>
MyFileShare3  \\MyStorageAccountName.file.core.windows.net\MyFileShare3;AccountName=MyStorageAccountName AccountKey=<key>

Con la cadena de conexión, puede usar el comando siguiente para montar el recurso compartido de Azure Files.With the connection string, you can use the following command to mount the Azure Files share.

net use <DesiredDriveLetter>: \\<MyStorageAccountName>.file.core.windows.net\<MyFileShareName> <AccountKey> /user:Azure\<MyStorageAccountName>

Para detalles, consulte Montaje de un recurso compartido de Azure Files y acceso al recurso compartido en Windows.For details, see Mount an Azure Files share and access the share in Windows.

También puede navegar en los directorios del recurso compartido de Azure Files de la manera siguiente:You can also navigate the directories under the Azure Files share as follows:

PS Azure:\MySubscriptionName\StorageAccounts\MyStorageAccountName\Files> cd .\MyFileShare1\
PS Azure:\MySubscriptionName\StorageAccounts\MyStorageAccountName\Files\MyFileShare1> dir

Mode  Name
----  ----
+     TestFolder
.     hello.ps1

Interacción con máquinas virtualesInteract with virtual machines

Puede encontrar todas las máquinas virtuales de la suscripción actual mediante el directorio VirtualMachines.You can find all your virtual machines under the current subscription via VirtualMachines directory.

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 remotasInvoke PowerShell script across remote VMs

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.Assuming you have a VM, MyVM1, let's use Invoke-AzVMCommand to invoke a PowerShell script block on the remote machine.

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.You can also navigate to the VirtualMachines directory first and run Invoke-AzVMCommand as follows.

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 remotaInteractively log on to a remote VM

Puede usar Enter-AzVM para iniciar sesión de manera interactiva en una máquina virtual que se ejecuta en Azure.You can use Enter-AzVM to interactively log into a VM running in 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 maneraYou can also navigate to the VirtualMachines directory first and run Enter-AzVM as follows

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

Detección de WebAppsDiscover WebApps

Para navegar fácilmente por los recursos de aplicaciones web, acceda al directorio WebApps.By entering into the WebApps directory, you can easily navigate your web apps resources

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

SSHSSH

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.To authenticate to servers or VMs using SSH, generate the public-private key pair in Cloud Shell and publish the public key to authorized_keys on the remote machine, such as /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.You can create SSH private-public keys using ssh-keygen and publish them to $env:USERPROFILE\.ssh in Cloud Shell.

Uso de SSHUsing SSH

Siga las instrucciones que se indican aquí para crear una nueva configuración de máquina virtual mediante cmdlets de Azure PowerShell.Follow instructions here to create a new VM configuration using Azure PowerShell cmdlets. 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.Before calling into New-AzVM to kick off the deployment, add SSH public key to the VM configuration. 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.The newly created VM will contain the public key in the ~\.ssh\authorized_keys location, thereby enabling credential-free SSH session to the VM.

# 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 disponiblesList available commands

En la unidad Azure, escriba Get-AzCommand para obtener comandos de Azure específicos del contexto.Under Azure drive, type Get-AzCommand to get context-specific Azure commands.

De manera alternativa, siempre puede usar Get-Command *az* -Module Az.* para saber cuáles son los comandos disponibles de Azure.Alternatively, you can always use Get-Command *az* -Module Az.* to find out the available Azure commands.

Instalación de módulos personalizadosInstall custom modules

Puede ejecutar Install-Module para instalar módulos desde la Galería de PowerShell.You can run Install-Module to install modules from the PowerShell Gallery.

Get-HelpGet-Help

Escriba Get-Help para obtener información sobre PowerShell en Azure Cloud Shell.Type Get-Help to get information about PowerShell in Azure Cloud Shell.

Get-Help

En un comando específico, todavía puede ejecutar Get-Help seguido de un cmdlet.For a specific command, you can still do Get-Help followed by a cmdlet.

Get-Help Get-AzVM

Uso de Azure Files para almacenar los datosUse Azure Files to store your data

Para crear un script, diga helloworld.ps1 y guárdelo en clouddrive para usarlo en distintas sesiones de shell.You can create a script, say helloworld.ps1, and save it to your clouddrive to use it across shell sessions.

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.Next time when you use PowerShell in Cloud Shell, the helloworld.ps1 file will exist under the $HOME\clouddrive directory that mounts your Azure Files share.

Uso de un perfil personalizadoUse custom profile

Puede crear los perfiles de PowerShell profile.ps1 o Microsoft.PowerShell_profile.ps1 para personalizar el entorno de PowerShell.You can customize your PowerShell environment, by creating PowerShell profile(s) - profile.ps1 (or Microsoft.PowerShell_profile.ps1). Guárdelo en $profile.CurrentUserAllHosts (o $profile.CurrentUserAllHosts), de modo que se pueda cargar en cada sesión de PowerShell en Cloud Shell.Save it under $profile.CurrentUserAllHosts (or $profile.CurrentUserAllHosts), so that it can be loaded in every PowerShell in Cloud Shell session.

Para saber cómo crear un perfil, consulte la información sobre los perfiles.For how to create a profile, refer to About Profiles.

Uso de GitUse Git

Para clonar un repositorio Git en Cloud Shell, debe crear un token de acceso personal y usarlo como el nombre de usuario.To clone a Git repo in the Cloud Shell, you need to create a personal access token and use it as the username. Una vez que tenga el token, clone el repositorio de la manera siguiente:Once you have your token, clone the repository as follows:

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

Salga del shellExit the shell

Escriba exit para finalizar la sesión.Type exit to terminate the session.