Eseguire i cmdlet di Azure PowerShell nei processi di PowerShell

Il funzionamento di Azure PowerShell dipende dalla connessione a un cloud di Azure e dall'attesa di risposte, per cui molti cmdlet bloccano la sessione di PowerShell finché non ottengono una risposta dal cloud. I processi di PowerShell consentono di eseguire i cmdlet in background o di eseguire più attività in Azure contemporaneamente, dall'interno di una singola sessione di PowerShell.

Questo articolo include una breve panoramica sull'uso dei cmdlet di Azure PowerShell come processi di PowerShell e su come controllarne il completamento. L'esecuzione di comandi in Azure PowerShell richiede l'uso di contesti di Azure PowerShell, che vengono descritti in dettaglio nell'articolo Contesti e credenziali di accesso di Azure. Per altre informazioni sui processi di PowerShell, vedere Informazioni sui processi di PowerShell.

Contesti di Azure con processi di PowerShell

I processi di PowerShell vengono eseguiti come processi separati, senza una sessione di PowerShell collegata, quindi è necessario condividere con essi le credenziali di Azure. Le credenziali vengono passate come oggetti contesto di Azure, usando uno di questi metodi:

  • Persistenza automatica del contesto. La persistenza del contesto è abilitata per impostazione predefinita e mantiene le informazioni di accesso tra più sessioni. Con la persistenza del contesto abilitata, il contesto di Azure corrente viene passato al nuovo processo:

    Enable-AzContextAutosave # Enables context autosave if not already on
    $vmadmin = Get-Credential
    
    Start-Job {
      New-AzVM -Name MyVm -Credential $Using:vmadmin
    }
    
  • Fornire un oggetto contesto di Azure con qualsiasi cmdlet di Azure PowerShell con un parametro AzContext :

    $context = Get-AzContext -Name 'mycontext' # Get an Azure context object
    $vmadmin = Get-Credential
    
    $job = Start-Job {
      New-AzVM -Name MyVm -AzContext $Using:context -Credential $Using:vmadmin
    }
    

    Se la persistenza del contesto è disabilitata, è necessario il parametro AzContext .

  • Usare il parametro AsJob fornito da alcuni cmdlet di Azure PowerShell. Questa opzione avvia automaticamente il cmdlet come processo di PowerShell usando il contesto di Azure attivo:

    $vmadmin = Get-Credential
    $job = New-AzVM -Name MyVm -Credential $vmadmin -AsJob
    

    Per verificare se un cmdlet supporta AsJob, controllare la relativa documentazione di riferimento. Il parametro AsJob non richiede l'abilitazione del salvataggio automatico del contesto.

È possibile controllare lo stato di un processo in esecuzione con il cmdlet Get-Job. Per ottenere l'output immediato di un processo, usare il cmdlet Receive-Job.

Per controllare lo stato di avanzamento di un'operazione in remoto in Azure, usare i cmdlet Get associati al tipo di risorsa modificato dal processo:

$vmadmin = Get-Credential
$context = Get-AzContext -Name 'mycontext'
$vmName = 'MyVm'

$job = Start-Job {
  New-AzVM -Name $Using:vmName -AzContext $Using:context -Credential $Using:vmadmin
}

Get-Job -Id $job.Id
Get-AzVM -Name $vmName

Vedi anche