在 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 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 參數。 此開關會自動將 Cmdlet 作為 PowerShell 工作啟動,並使用目前的 Azure 上下文:
$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