Condividi tramite


Eseguire i cmdlet di Azure PowerShell nei processi di PowerShell

Azure PowerShell dipende dalla connessione a un cloud di Azure e dall'attesa delle risposte, quindi la maggior parte di questi cmdlet blocca la sessione di PowerShell fino a quando non riceve 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 offre una panoramica su come eseguire i cmdlet di Azure PowerShell come processi di PowerShell e verificare il completamento. L'esecuzione di comandi in Azure PowerShell richiede l'uso di contesti di Azure PowerShell, illustrati in dettaglio in contesti di Azure e credenziali di accesso. Per altre informazioni sui processi di PowerShell, vedere Informazioni sui processi di PowerShell.

Contesti di lavoro di Azure con attività di PowerShell

I processi di PowerShell vengono eseguiti come processi separati senza una sessione di PowerShell collegata, quindi le credenziali di Azure devono essere condivise con esse. 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
    }
    
  • Fornisci un oggetto di contesto di Azure con qualsiasi cmdlet di Azure PowerShell che abbia 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 che il salvataggio automatico del contesto sia abilitato.

È possibile controllare lo stato di un processo in esecuzione con il cmdlet Get-Job. Per ottenere l'output da un processo finora, 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 da modificare 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

Vedere anche