Ejecutar cmdlets de Azure PowerShell en trabajos de PowerShell

Azure PowerShell depende de la conexión a una nube de Azure y de la espera de respuestas, por lo que la mayoría de estos cmdlets bloquean la sesión de PowerShell hasta que reciben una respuesta de la nube. Los trabajos de PowerShell permiten ejecutar cmdlets en segundo plano, o realizar varias tareas en Azure a la vez, desde una única 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 a la comprobación de su finalización. La ejecución de comandos en Azure PowerShell requiere el uso de contextos de Azure PowerShell, los cuales se describen en detalle en Contextos y credenciales de inicio de sesión de Azure. 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 se deben compartir con ellos. Las credenciales se pasan como objetos de contexto de Azure mediante uno de estos métodos:

  • Persistencia automática de contextos. La persistencia de contexto está habilitada de forma predeterminada y permite conservar la información de inicio de sesión en varias sesiones. Con la persistencia de contexto habilitada, el contexto de Azure actual 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 de contexto está deshabilitada, se requerirá el parámetro AzContext.

  • Use el parámetro AsJob que proporcionan algunos cmdlets de Azure PowerShell. Este modificador inicia automáticamente el cmdlet como un trabajo de PowerShell mediante el contexto de Azure que está activo:

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

    Para comprobar si un cmdlet admite AsJob, consulte la documentación de referencia. El parámetro AsJob no requiere que se habilite el guardado automático 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 con el tipo de recurso que el trabajo está modificando:

$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