你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 PowerShell 作业中运行 Azure PowerShell cmdlet
Azure PowerShell 依赖于连接到 Azure 云并等待响应,因此其中大多数 cmdlet 会阻止 PowerShell 会话,直到它们从云获取响应。 使用 PowerShell 作业,可在后台运行 cmdlet,或者在 Azure 上一次执行多个任务(从单个 PowerShell 会话内)。
本文简要概述了如何将 Azure PowerShell cmdlet 作为 PowerShell 作业运行并检查完成情况。 在 Azure PowerShell 中运行命令需要使用 Azure PowerShell 上下文,Azure 上下文和登录凭据中详细介绍了这些上下文。 若要了解有关 PowerShell 作业的详细信息,请参阅 关于 PowerShell 作业。
Azure 上下文与 PowerShell 作业
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