英語で読む

次の方法で共有


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 Termsy」を参照してください。 Azure コンテキストで使用される認証トークンは、永続的なセッションの一部である他の格納されたトークンと同じです。

Connect-AzAccountを使用してサインインすると、既定のサブスクリプションに対して少なくとも 1 つの Azure コンテキストが作成されます。 Connect-AzAccount によって返されるオブジェクトは、PowerShell セッションの残りの部分で使用される既定の Azure コンテキストです。

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)形式で使用されます。

アクティブな Azure コンテキストを変更する

Set-AzContextSelect-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-AzContextSelect-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 ProcessConnect-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で再認証する必要があります。

関連項目