Azure PowerShell コンテキスト オブジェクト
[アーティクル] 2025/01/16
2 人の共同作成者
フィードバック
この記事の内容
Azure コンテキスト オブジェクトの概要
Azure コンテキストを取得する
サブスクリプション情報から新しい Azure コンテキストを作成する
アクティブな Azure コンテキストを変更する
PowerShell セッション間で Azure コンテキストを保存する
Azure コンテキストと保存されている資格情報を削除する
関連項目
さらに 3 個を表示
Azure PowerShell では、Azure PowerShell コンテキスト オブジェクト (Azure コンテキスト) を使用して、サブスクリプションと認証情報を保持します。 複数のサブスクリプションにアクセスできる場合、Azure コンテキストを使用すると、Azure PowerShell コマンドレットを実行するサブスクリプションを選択できます。 Azure コンテキストは、複数の PowerShell セッションにわたってサインイン情報を格納し、バックグラウンド タスクを実行するためにも使用されます。
この記事では、サブスクリプションやアカウントの管理ではなく、Azure コンテキストの管理について説明します。 ユーザー、サブスクリプション、テナント、またはその他のアカウント情報を管理する場合は、Microsoft Entra ID ドキュメント 参照してください。 バックグラウンド タスクまたは並列タスクの実行にコンテキストを使用する方法については、「Azure コンテキストに慣れた後に、PowerShell ジョブ で Azure PowerShell コマンドレットを実行する」を参照してください。
Azure コンテキストは、コマンドを実行するアクティブなサブスクリプションと、Azure クラウドに接続するために必要な認証情報を表す PowerShell オブジェクトです。 Azure コンテキストでは、サブスクリプションを切り替えるたびに Azure PowerShell でアカウントを再認証する必要はありません。 Azure コンテキストは次で構成されます。
Connect-AzAccount
を使用して Azure にサインインするために使用された アカウント 。 Azure コンテキストでは、ユーザー、アプリケーション ID、およびサービス プリンシパルは、アカウントの観点から同じように扱われます。
アクティブな サブスクリプション 。Azure リソースを作成して実行するための Microsoft とのサービス契約であり、テナント に関連付けられています。 テナントは、多くの場合、ドキュメントや Microsoft Entra を使用する際に 組織 として言及されます。
トークン キャッシュ への参照。Azure クラウドにアクセスするための格納された認証トークンです。 コンテキストの自動保存設定 、トークンの保存場所と保持期間を決定します。
これらの用語の詳細については、「Microsoft Entra Termsy 」を参照してください。
Azure コンテキストで使用される認証トークンは、永続的なセッションの一部である他の格納されたトークンと同じです。
Connect-AzAccount
を使用してサインインすると、既定のサブスクリプションに対して少なくとも 1 つの Azure コンテキストが作成されます。 Connect-AzAccount
によって返されるオブジェクトは、PowerShell セッションの残りの部分で使用される既定の Azure コンテキストです。
使用可能な Azure コンテキストは、Get-AzContext
コマンドレットを使用して取得されます。 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)
形式で使用されます。
Set-AzContext
と Select-AzContext
の両方を使用して、アクティブな Azure コンテキストを変更できます。 「新しい 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 パラメーターをサポートしています。 スコープ を使用すると、既定を変更することなく、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 コンテキストを保存する
既定では、PowerShell セッション間で使用するために Azure コンテキストが保存されます。 この動作は、次の方法で変更できます。
-Scope Process
で Connect-AzAccount
を使用してサインインします。
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
で再認証する必要があります。