объекты контекста Azure PowerShell

Azure PowerShell использует объекты контекста Azure PowerShell (контексты Azure) для хранения сведений о подписке и проверке подлинности. Если у вас есть доступ к нескольким подпискам, контексты Azure позволяют выбрать подписку для запуска командлетов Azure PowerShell. Контексты Azure также используются для хранения сведений о входе в систему в нескольких сеансах PowerShell и выполнения фоновых задач.

В этой статье описывается управление контекстами Azure, а не управление подписками или учетными записями. Если вы хотите управлять пользователями, подписками, клиентами или другими сведениями об учетной записи, см. документацию по Microsoft Entra ID. Дополнительные сведения об использовании контекстов для выполнения фоновых или параллельных задач см. статью Запуск командлетов Azure PowerShell в задачах PowerShell после ознакомления с контекстами Azure.

Обзор объектов контекста Azure

Контексты Azure — это объекты PowerShell, представляющие вашу активную подписку, против которой выполняются команды, и сведения для аутентификации, необходимые для подключения к облаку Azure. При использовании контекстов Azure Azure PowerShell не требует повторной проверки подлинности учетной записи при каждом переключении подписок. Контекст Azure состоит из следующих элементов:

  • Учётная запись account, которая использовалась для входа в Azure с помощью Connect-AzAccount. Контексты Azure обрабатывают пользователей, идентификаторы приложений и главные службы одинаково с точки зрения учетной записи.
  • Активная подписка — это соглашение об обслуживании с Майкрософт для создания и управления ресурсами Azure, которые связаны с арендатором. Арендаторы часто называются организациями в документации или при работе с Microsoft Entra.
  • Ссылка на кэш токенов, хранящий аутентификационные токены для доступа к облаку Azure. Параметры автосохранений контекста определяют, где хранится маркер и как долго он сохраняется.

Дополнительные сведения об этих терминах см. в разделе Microsoft Entra Терминология. Маркеры проверки подлинности, используемые контекстами Azure, совпадают с другими сохраненными маркерами, которые являются частью постоянного сеанса.

При входе с помощью Connect-AzAccount для подписки по умолчанию создается по крайней мере один контекст Azure. Объект, возвращаемый Connect-AzAccount, является контекстом Azure по умолчанию, используемым для остальной части сеанса 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

При необходимости укажите имя или идентификатор подписки и идентификатор клиента:

Set-AzContext -Name MyContextName -Subscription MySubscriptionName -Tenant 00000000-0000-0000-0000-000000000000

Если параметр Name опущен, имя и идентификатор подписки используются в качестве имени контекста в формате Subscription Name (subscription-id).

Изменение активного контекста Azure

Можно использовать как Set-AzContext, так и Select-AzContext для изменения активного контекста Azure. Как описано в Create новый контекст 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, чтобы вы могли контролировать, как долго контекст остается активным. Контекст позволяет изменить активный режим одного сеанса без изменения настройки по умолчанию:

Get-AzContext -Name MyContextName | Select-AzContext -Scope Process

Чтобы избежать переключения контекстов для всего сеанса PowerShell, команды Azure PowerShell с параметром AzContext следует выполнять в заданном контексте.

$context = Get-AzContext -Name MyContextName
New-AzVM -Name ExampleVM -AzContext $context

Другое основное использование контекстов с командлетами Azure PowerShell заключается в выполнении фоновых команд. Чтобы узнать больше о запуске заданий PowerShell с помощью Azure PowerShell, см. в разделе Запуск командлетов Azure PowerShell в заданиях PowerShell.

Сохранение контекстов Azure в сеансах PowerShell

По умолчанию Azure контексты сохраняются для использования между сеансами PowerShell. Это поведение можно изменить следующим образом:

  • Войдите, используя -Scope Process с Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    Контекст Azure, возвращенный в рамках этой авторизации, действителен для текущего сеанса только и не сохраняются автоматически, независимо от параметра автосохранения контекста Azure PowerShell.

  • Отключите автосохранение контекста в Azure PowerShell с помощью командлета Disable-AzContextAutosave. Отключение автосохранения контекста не очищает сохраненные маркеры. Сведения о том, как очистить сохраненные сведения о контексте Azure, см. в разделе Контексты Azure и сохраненные учетные данные.

  • Явно включить автосохранение контекста Azure можно с помощью командлета Enable-AzContextAutosave. С включенной функцией автосохранений контексты пользователя хранятся локально для последующих сеансов PowerShell.

  • Вручную сохраните контексты с помощью Save-AzContext, чтобы использовать их в будущих сеансах PowerShell, где их можно загрузить с помощью 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

Сведения о контексте и маркеры хранятся в каталоге $env:USERPROFILE\.Azure на Windows и $HOME/.Azure на других платформах. Конфиденциальные данные, такие как идентификаторы подписок и идентификаторы арендаторов, могут по-прежнему быть раскрыты в хранимых данных, через журналы или сохраненные контексты. Сведения о том, как очистить хранимую информацию, см. в разделе Удаление контекстов 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.

См. также