共用方式為


在 PowerShell 作業中執行 Azure PowerShell 命令

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 命令提供一個 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 環境,以 PowerShell 作業的方式自動啟動 Cmdlet:

    $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

另請參閱