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 svolgere più attività contemporaneamente all'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 contesto di ambiente 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 il salvataggio permanente del contesto è disabilitato, è necessario il parametro AzContext.
Usare il parametro AsJob fornito da alcuni cmdlet di Azure PowerShell. Questo passaggio avvia automaticamente il cmdlet come un 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