Condividi tramite


Esegui 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 dei contesti di Azure PowerShell, che sono trattati in dettaglio in Contesti di Azure e credenziali di accesso. Per saperne di più su PowerShell Jobs, vedi About PowerShell Jobs.

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 di contesto di Azure, utilizzando uno di questi metodi:

  • Persistenza automatica del contesto. La persistenza del contesto è attivata di default e conserva le informazioni di accesso tra sessioni multiple. 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 di contesto 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, il parametro AzContext è obbligatorio.

  • Utilizzare 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 fino a questo momento, 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