Azure PowerShell は、Azure クラウドへの接続と応答の待機に依存するため、これらのコマンドレットのほとんどは、クラウドから応答を受け取るまで PowerShell セッションをブロックします。 PowerShell ジョブを使用すると、バックグラウンドでコマンドレットを実行したり、1 つの PowerShell セッション内から Azure で一度に複数のタスクを実行したりできます。
この記事では、PowerShell ジョブとして Azure PowerShell コマンドレットを実行し、完了を確認する方法の簡単な概要について説明します。 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 コマンドレットで提供される AsJob パラメーターを使用します。 このスイッチは、アクティブな Azure コンテキストを使用して、PowerShell ジョブとしてコマンドレットを自動的に開始します。
$vmadmin = Get-Credential $job = New-AzVM -Name MyVm -Credential $vmadmin -AsJobコマンドレットが AsJob をサポートしているかどうかを確認するには、そのリファレンス ドキュメントを確認してください。 AsJob パラメーターでは、コンテキストの自動保存を有効にする必要はありません。
Get-Job コマンドレットを使用して、実行中のジョブの状態を確認できます。 これまでのジョブから出力を取得するには、 Receive-Job コマンドレットを使用します。
Azure で操作の進行状況をリモートで確認するには、ジョブによって変更されるリソースの種類に関連付けられている Get コマンドレットを使用します。
$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
こちらもご覧ください
Azure PowerShell