Compartir a través de


Ejecutar cmdlets de Azure PowerShell en trabajos de PowerShell

Azure PowerShell depende de conectarse a una nube de Azure y esperar respuestas, por lo que la mayoría de estos cmdlets bloquean la sesión de PowerShell hasta que obtienen una respuesta de la nube. Los trabajos de PowerShell le permiten ejecutar cmdlets en segundo plano o realizar varias tareas en Azure a la vez, desde dentro de una sola sesión de PowerShell.

Este artículo es una breve introducción a la ejecución de cmdlets de Azure PowerShell como trabajos de PowerShell y comprobación de la finalización. La ejecución de comandos en Azure PowerShell requiere el uso de contextos de Azure PowerShell, que se tratan en detalle en contextos de Azure e credenciales de inicio de sesión. Para más información sobre los trabajos de PowerShell, consulte Acerca de los trabajos de PowerShell.

Contextos de Azure con trabajos de PowerShell

Los trabajos de PowerShell se ejecutan como procesos independientes sin una sesión de PowerShell asociada, por lo que las credenciales de Azure deben compartirse con ellos. Las credenciales se pasan como objetos de contexto de Azure mediante uno de estos métodos:

  • Persistencia automática del contexto. La persistencia del contexto está habilitada de forma predeterminada y conserva la información de inicio de sesión en varias sesiones. Con la persistencia del contexto habilitada, el contexto actual de Azure se pasa al nuevo proceso:

    Enable-AzContextAutosave # Enables context autosave if not already on
    $vmadmin = Get-Credential
    
    Start-Job {
      New-AzVM -Name MyVm -Credential $Using:vmadmin
    }
    
  • Proporcione un objeto de contexto de Azure con cualquier cmdlet de Azure PowerShell que tenga un parámetro 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
    }
    

    Si la persistencia del contexto está deshabilitada, se requiere el parámetro AzContext.

  • Use el parámetro AsJob proporcionado por algunos cmdlets de Azure PowerShell. Este interruptor inicia automáticamente el cmdlet como un trabajo de PowerShell utilizando el contexto activo de Azure.

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

    Para ver si un cmdlet admite AsJob, consulte su documentación de referencia. El parámetro AsJob no requiere que se habilite el autoguardado del contexto.

Puede comprobar el estado de un trabajo en ejecución con el cmdlet Get-Job. Para obtener la salida de un trabajo hasta el momento, use el cmdlet Receive-Job.

Para comprobar el progreso de una operación de forma remota en Azure, use los cmdlets de Get asociados al tipo de recurso que modifica el trabajo:

$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

Consulte también