Azure PowerShell コンテキスト オブジェクト
Azure PowerShell は、Azure PowerShell コンテキスト オブジェクト (Azure コンテキスト) を使用して、サブスクリプションと認証情報を保持します。 複数のサブスクリプションを利用できる場合、Azure コンテキストを使用して、Azure PowerShell コマンドレットを実行するサブスクリプションを選択できます。 Azure コンテキストは、複数の PowerShell セッションにわたってサインイン情報を格納し、バックグラウンド タスクを実行するためにも使用されます。
この記事では、サブスクリプションやアカウントの管理ではなく、Azure コンテキストの管理について説明します。 ユーザー、サブスクリプション、テナント、またはその他のアカウント情報を管理する場合、Microsoft Entra ID のドキュメントを参照してください。 コンテキストを使用してバックグラウンドまたは並列タスクを実行する方法については、Azure コンテキストに慣れた後に「PowerShell ジョブで Azure PowerShell コマンドレットを実行する」を参照してください。
Azure コンテキスト オブジェクトの概要
Azure コンテキストは、コマンドの実行対象のアクティブなサブスクリプションと、Azure クラウドに接続するために必要な認証情報を表す PowerShell オブジェクトです。 Azure コンテキストを使用すると、サブスクリプションを切り替えるたびに、Azure PowerShell でアカウントを再認証する必要はありません。 Azure コンテキストは、次のもので構成されます。
Connect-AzAccount
で Azure にサインインするために使用されたアカウント。 Azure コンテキストでは、アカウントの観点からは、ユーザー、アプリケーション ID、およびサービス プリンシパルが同じものとして扱われます。- テナントに関連付けられたアクティブなサブスクリプション (Azure リソースを作成および実行するための Microsoft とのサービス契約)。 多くの場合、テナントは、ドキュメント内で、または Microsoft Entra を使用する場合に組織と呼ばれます。
- トークン キャッシュ (Azure クラウドへアクセスするための格納された認証トークン) への参照。 コンテキスト自動保存設定によって、トークンの格納場所と格納期間が決定されます。
これらの用語の詳細については、Microsoft Entra の用語に関する記事を参照してください。 Azure コンテキストによって使用される認証トークンは、永続セッションの一部である他の保存されたトークンと同じです。
Connect-AzAccount
を使用してサインインすると、既定のサブスクリプションに対して少なくとも 1 つの Azure コンテキストが作成されます。 Connect-AzAccount
によって返されるオブジェクトは、残りの PowerShell セッションで使用される既定の Azure コンテキストです。
Azure コンテキストを取得する
Get-AzContext
コマンドレットを使用すると、使用可能な Azure コンテキストが取得されます。 ListAvailable パラメーターを使用して使用可能なコンテキストを一覧表示します。
Get-AzContext -ListAvailable
または、名前を指定してコンテキストを取得します。
Get-AzContext -Name MyContextName
コンテキスト名は、関連付けられたサブスクリプションの名前とは異なる場合があります。 コンテキスト名を決定するには、既定では表示されない Name プロパティの値を使用します。
Get-AzContext -ListAvailable | Select-Object -Property *
重要
使用可能な Azure コンテキストが必ずしも使用可能なサブスクリプションであるとは限りません。 Azure コンテキストはローカルに保存された情報のみを表します。 Get-AzSubscription
コマンドレットを使用すると、サブスクリプションを取得できます。
サブスクリプション情報から新しい Azure コンテキストを作成する
Set-AzContext
コマンドレットは、新しい Azure コンテキストを作成し、アクティブなコンテキストとして設定するために使用されます。 新しい Azure コンテキストを作成する最も簡単な方法は、既存のサブスクリプション情報を使用することです。 Set-AzContext
コマンドレットは、Get-AzSubscription
からの出力オブジェクトをパイプ値として受け取り、新しい Azure コンテキストを構成します。
Get-AzSubscription -SubscriptionName MySubscriptionName |
Set-AzContext -Name MyContextName
または、サブスクリプション名または ID と必要に応じてテナント ID を指定します。
Set-AzContext -Name MyContextName -Subscription MySubscriptionName -Tenant 00000000-0000-0000-0000-000000000000
Name パラメーターを省略すると、サブスクリプションの名前と ID が Subscription Name (subscription-id)
の形式でコンテキスト名として使用されます。
アクティブな Azure コンテキストを変更する
アクティブな Azure コンテキストを変更するには、Set-AzContext
と Select-AzContext
の両方を使用できます。 新しい Azure コンテキストの作成に関するセクションで説明されているように、Set-AzContext
を使用すると、サブスクリプションに対して新しい Azure コンテキストが作成され (存在しない場合)、アクティブ コンテキストがそれに切り替えられます。
Select-AzContext
は、既存の Azure コンテキストでのみ使用されることが想定されており、Set-AzContext -Context
の使用と同様に機能しますが、パイプ処理で使用するように設計されています。
Set-AzContext -Context (Get-AzContext -Name MyContextName) # Set a context with an inline Azure context object
Get-AzContext -Name MyContextName | Select-AzContext # Set a context with a piped Azure context object
Azure PowerShell の他の多くのアカウントおよびコンテキスト管理コマンドと同様に、Set-AzContext
と Select-AzContext
では Scope パラメーターがサポートされており、コンテキストがアクティブになる期間を制御できます。 Scope では、既定値を変更せずに、1 つのセッションのアクティブなコンテキストを変更できます。
Get-AzContext -Name MyContextName | Select-AzContext -Scope Process
PowerShell セッション全体のコンテキストを切り替えないようにするために、AzContext パラメーターのある Azure PowerShell コマンドは、指定のコンテキストに対して実行できます。
$context = Get-AzContext -Name MyContextName
New-AzVM -Name ExampleVM -AzContext $context
Azure PowerShell コマンドレットでのコンテキストのもう 1 つの主な用途は、バックグラウンド コマンドを実行することです。 Azure PowerShell を使用した PowerShell ジョブの実行の詳細については、PowerShell ジョブでの Azure PowerShell コマンドレットの実行に関する記事を参照してください。
PowerShell セッション間での Azure コンテキストの保存
既定では、Azure コンテキストは、PowerShell セッション間で使用するために保存されます。 この動作は、次の方法で変更できます。
Connect-AzAccount
で-Scope Process
を使用してサインインします。Connect-AzAccount -Scope Process
このサインインの一部として返される Azure コンテキストは、現在のセッションで "のみ" 有効であり、Azure PowerShell コンテキストの自動保存の設定に関係なく、自動的には保存されません。
Disable-AzContextAutosave
コマンドレットを使用して、Azure PowerShell のコンテキストの自動保存を無効にします。 コンテキストの自動保存を無効にしても、格納されているトークンはクリアされません。 保存されている Azure コンテキスト情報をクリアする方法については、「Azure コンテキストと保存されている資格情報の削除」を参照してください。Azure コンテキストの自動保存を明示的に有効にするには、
Enable-AzContextAutosave
コマンドレットを使用します。 自動保存が有効になっていると、ユーザーのコンテキストは、後の PowerShell セッション用にローカルに保存されます。今後の PowerShell セッションで使用するために
Save-AzContext
を使用してコンテキストを手動で保存します。保存したコンテキストは、Import-AzContext
を使用して読み込むことができます。Save-AzContext -Path current-context.json # Save the current context Import-AzContext -Path other-context.json # Load the context from a file and set it to the current context
警告
コンテキストの自動保存を無効にしても、保存されていた保存済みのコンテキスト情報はクリアされません。 保存されている情報を削除するには、Clear-AzContext
コマンドレットを使用します。 保存済みコンテキストの削除の詳細については、「Azure コンテキストと保存されている資格情報の削除」を参照してください。
これらの各コマンドでは、Scope パラメーターがサポートされています。これは、Process
の値を取り、現在実行中のプロセスのみに適用することができます。 たとえば、新しく作成されたコンテキストが PowerShell セッションを終了した後に保存されないようにするには、次のようにします。
Disable-AzContextAutosave -Scope Process
Set-AzContext -Subscription 'Subscription ID or Name' -Tenant 00000000-0000-0000-0000-000000000000
コンテキスト情報とトークンは、Windows 上の $env:USERPROFILE\.Azure
ディレクトリおよび他のプラットフォーム上の $HOME/.Azure
に格納されます。 サブスクリプション ID やテナント ID などの機密情報が、保存された情報、ログ、または保存されたコンテキストにより、まだ公開されている場合があります。 保存されている情報をクリアする方法については、「Azure コンテキストと保存されている資格情報の削除」を参照してください。
Azure コンテキストと保存されている資格情報の削除
Azure コンテキストと資格情報をクリアするには、次のようにします。
Disconnect-AzAccount
を使用してアカウントからサインアウトします。 アカウントまたはコンテキストにより、任意のアカウントからサインアウトできます。Disconnect-AzAccount # Disconnect active account Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name Disconnect-AzAccount -ContextName MyContextName # Disconnect by context name $context = Get-AzContext Disconnect-AzAccount -AzureContext $context # Disconnect using context object information
切断すると、保存されている認証トークンが必ず削除され、切断されたユーザーまたはコンテキストに関連付けられている保存済みのコンテキストがクリアされます。
Clear-AzContext
を使用してください。 このコマンドレットを使用すると、保存されているコンテキストと認証トークンが常に削除され、ユーザーがサインアウトされます。Remove-AzContext
を使用してコンテキストを削除します。Remove-AzContext -Name MyContextName # Remove by name Get-AzContext -Name MyContextName | Remove-AzContext # Remove by piping an Azure context object
アクティブなコンテキストを削除すると、Azure から切断され、
Connect-AzAccount
で再認証する必要があります。
関連項目
Azure PowerShell