在 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 內容,自動以 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