共用方式為


在 PowerShell 作業中執行 Azure PowerShell Cmdlet

Azure PowerShell 相依於連線到 Azure 雲端並等候回應,因此大部分的 Cmdlet 都會封鎖您的 PowerShell 工作階段,直到它們從雲端取得回應為止。 PowerShell 作業可讓您在背景執行 Cmdlet,或從單一 PowerShell 工作階段內一次在 Azure 上執行多個工作。

本文簡要概觀如何以 PowerShell 作業的形式執行 Azure PowerShell Cmdlet 並檢查完成。 在 Azure PowerShell 中執行命令需要使用 Azure PowerShell 內容,這在 Azure 內容和登入認證中詳細說明。 若要深入瞭解 PowerShell 作業,請參閱 關於 PowerShell 作業

具有 PowerShell 作業的 Azure 內容

PowerShell 作業會以個別進程的形式執行,而不需要附加的 PowerShell 工作階段,因此必須與它們共用您的 Azure 認證。 認證會使用下列其中一種方法,以 Azure 內容物件的形式傳遞:

  • 自動內容持續性。 內容持續性預設會啟用,並會跨多個工作階段保留您的登入資訊。 啟用內容持續性後,目前的 Azure 內容會傳遞至新的進程:

    Enable-AzContextAutosave # Enables context autosave if not already on
    $vmadmin = Get-Credential
    
    Start-Job {
      New-AzVM -Name MyVm -Credential $Using:vmadmin
    }
    
  • 提供具有 AzContext 參數的任何 Azure PowerShell Cmdlet 的 Azure 內容物件:

    $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
    }
    

    如果停用內容持續性,則需要 AzContext 參數。

  • 使用某些 Azure PowerShell Cmdlet 所提供的 AsJob 參數。 此參數會使用作用中的 Azure 內容,自動將 Cmdlet 啟動為 PowerShell 作業:

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

    若要查看 Cmdlet 是否支援 AsJob,請查看其參考檔。 AsJob 參數不需要啟用內容自動儲存。

您可以使用 Get-Job Cmdlet 檢查執行中作業的狀態。 若要取得目前為止作業的輸出,請使用 Receive-Job Cmdlet。

若要在 Azure 上遠端檢查作業的進度,請使用與作業所修改的資源類型相關聯的 Get Cmdlet:

$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

另請參閱