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