Guida introduttiva a PowerShell in Azure Cloud ShellQuickstart for PowerShell in Azure Cloud Shell

Questo documento illustra dettagliatamente come usare PowerShell in Cloud Shell nel portale di Azure.This document details how to use the PowerShell in Cloud Shell in the Azure portal.

Nota

È disponibile anche una guida introduttiva a Bash in Azure Cloud Shell.A Bash in Azure Cloud Shell Quickstart is also available.

Nota

Questo articolo è stato aggiornato per usare il nuovo modulo Az di Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. È comunque possibile usare il modulo AzureRM, che continuerà a ricevere correzioni di bug almeno fino a dicembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Per altre informazioni sul nuovo modulo Az e sulla compatibilità di AzureRM, vedere Introduzione del nuovo modulo Az di Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Per istruzioni sull'installazione del modulo Az, vedere Installare Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Avviare Cloud ShellStart Cloud Shell

  1. Fare clic sul pulsante Cloud Shell dalla barra di navigazione in alto nel portale di AzureClick on Cloud Shell button from the top navigation bar of the Azure portal

  2. Selezionare l'ambiente PowerShell dall'elenco a discesa per accedere all’unità Azure (Azure:)Select the PowerShell environment from the drop-down and you will be in Azure drive (Azure:)

Esecuzione dei comandi di PowerShellRun PowerShell commands

Eseguire i comandi regolari di PowerShell in Cloud Shell, tra cui: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. Elencare tutte le sottoscrizioni dall'unità AzureList all your subscriptions from Azure drive

    PS Azure:\> dir
    
  2. cd alla sottoscrizione preferitacd to your preferred subscription

    PS Azure:\> cd MySubscriptionName
    PS Azure:\MySubscriptionName>
    
  3. Consente di visualizzare tutte le risorse di Azure nella sottoscrizione correnteView all your Azure resources under the current subscription

    Digitare dir per elencare più viste delle risorse 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
    

Visualizzazione AllResourcesAllResources view

Digitare dir nella directory AllResources per visualizzare le risorse in Azure.Type dir under AllResources directory to view your Azure resources.

PS Azure:\MySubscriptionName> dir AllResources

Esplora gruppi di risorseExplore resource groups

È possibile accedere alla directory ResourceGroups e all'interno di un gruppo di risorse specifico è possibile trovare le macchine virtuali.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

È possibile notare che quando si digita per la seconda voltadir, Cloud Shell è in grado di mostrare gli elementi in modo molto più veloce.You may notice that the second time when you type dir, the Cloud Shell is able to display the items much faster. Questo avviene perché gli elementi figlio vengono spostati nella cache della memoria per migliorare l'esperienza dell’utente.This is because the child items are cached in memory for a better user experience. Tuttavia, è sempre possibile usare dir -Force per ottenere dati aggiornati.However, you can always use dir -Force to get fresh data.

Accedendo alla directory StorageAccounts, è possibile esplorare facilmente tutte le risorse di archiviazioneBy 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 stringa di connessione, è possibile usare il comando seguente per montare la condivisione di File di Azure.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>

Per informazioni dettagliate, vedere montare una condivisione file di Azure e accedere alla condivisione in Windows.For details, see Mount an Azure Files share and access the share in Windows.

È anche possibile esplorare le directory nella condivisione di File di Azure come indicato di seguito: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

Interazione con macchine virtualiInteract with virtual machines

È possibile trovare tutte le macchine virtuali della sottoscrizione corrente tramite la directory 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

Richiamare uno script PowerShell tra le macchine virtuali remoteInvoke PowerShell script across remote VMs

Se si dispone di una macchina virtuale, MyVM1, usare Invoke-AzVMCommand per richiamare un blocco di script di PowerShell nel computer remoto.Assuming you have a VM, MyVM1, let's use Invoke-AzVMCommand to invoke a PowerShell script block on the remote machine.

Invoke-AzVMCommand -Name MyVM1 -ResourceGroupName MyResourceGroup -Scriptblock {Get-ComputerInfo} -EnableRemoting

È anche possibile passare prima alla directory VirtualMachines e poi eseguire Invoke-AzVMCommand come indicato di seguito.You can also navigate to the VirtualMachines directory first and run Invoke-AzVMCommand as follows.

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

# 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                           :
 ...

Accedere in modo interattivo a una macchina virtuale remotaInteractively log on to a remote VM

È possibile utilizzare Enter-AzVM per accedere in modo interattivo a una macchina virtuale in esecuzione in Azure.You can use Enter-AzVM to interactively log into a VM running in Azure.

PS Azure:\> Enter-AzVM -Name MyVM1 -ResourceGroupName MyResourceGroup -EnableRemoting

È anche possibile prima passare alla directory VirtualMachines e poi eseguire Enter-AzVM come indicato di seguito.You 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

Scoprire WebAppDiscover WebApps

Accedendo alla directory WebApps, è possibile esplorare facilmente le risorse app WebBy 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

Per eseguire l'autenticazione a server o macchine virtuali tramite SSH, generare la coppia di chiavi pubblica-privata in Cloud Shell e pubblicare la chiave pubblica in authorized_keys nel computer remoto, ad esempio /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

È possibile creare chiavi SSH pubblica-privata usando ssh-keygen e pubblicarle in $env:USERPROFILE\.ssh in Cloud Shell.You can create SSH private-public keys using ssh-keygen and publish them to $env:USERPROFILE\.ssh in Cloud Shell.

Uso di SSHUsing SSH

Seguire le istruzioni riportate qui per creare una nuova configurazione di macchina virtuale usando i cmdlet di Azure PowerShell.Follow instructions here to create a new VM configuration using Azure PowerShell cmdlets. Prima di chiamare New-AzVM per avviare la distribuzione, aggiungere la chiave pubblica SSH alla configurazione di macchina virtuale.Before calling into New-AzVM to kick off the deployment, add SSH public key to the VM configuration. La nuova macchina virtuale conterrà la chiave pubblica nel percorso ~\.ssh\authorized_keys, abilitando quindi le sessioni SSH senza credenziali nella macchina virtuale.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

Elenco dei comandi disponibiliList available commands

Nell'unità Azure digitare Get-AzCommand per ottenere i comandi di Azure specifici per il contesto.Under Azure drive, type Get-AzCommand to get context-specific Azure commands.

In alternativa, è sempre possibile usare Get-Command *az* -Module Az.* per scoprire i comandi di Azure disponibili.Alternatively, you can always use Get-Command *az* -Module Az.* to find out the available Azure commands.

Installazione di moduli personalizzatiInstall custom modules

È possibile eseguire Install-Module per installare i moduli dal PowerShell Gallery.You can run Install-Module to install modules from the PowerShell Gallery.

Get-HelpGet-Help

Digitare Get-Help per ottenere informazioni su PowerShell in Azure Cloud Shell.Type Get-Help to get information about PowerShell in Azure Cloud Shell.

Get-Help

Per un comando specifico, è comunque possibile eseguire Get-Help e subito dopo un cmdlet.For a specific command, you can still do Get-Help followed by a cmdlet.

Get-Help Get-AzVM

Usare File di Azure per archiviare i datiUse Azure Files to store your data

È possibile creare uno script, ad esempio helloworld.ps1, e salvarlo nel clouddrive personale per usarlo in diverse sessioni di 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!

Quando si usa PowerShell in Cloud Shell la volta successiva, il file helloworld.ps1 sarà presente nella directory $HOME\clouddrive che monta la condivisione file di Azure.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.

Usare un profilo personalizzatoUse custom profile

È possibile personalizzare l'ambiente PowerShell creando un profilo o più profili PowerShell profile.ps1 (o Microsoft.PowerShell_profile.ps1).You can customize your PowerShell environment, by creating PowerShell profile(s) - profile.ps1 (or Microsoft.PowerShell_profile.ps1). Salvarlo in $profile.CurrentUserAllHosts (o $profile.CurrentUserAllHosts) in modo che possa essere caricato in ogni sessione di PowerShell in Cloud Shell.Save it under $profile.CurrentUserAllHosts (or $profile.CurrentUserAllHosts), so that it can be loaded in every PowerShell in Cloud Shell session.

Per informazioni sucome creare un profilo, vedere About Profiles.For how to create a profile, refer to About Profiles.

Usare GitUse Git

Per clonare un repository git nella Cloud Shell, è necessario creare un token di accesso personale e usarlo come nome utente.To clone a Git repo in the Cloud Shell, you need to create a personal access token and use it as the username. Dopo avere ottenuto il token, clonare il repository come indicato di seguito:Once you have your token, clone the repository as follows:

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

Chiudere la shellExit the shell

Digitare exit per terminare la sessione.Type exit to terminate the session.