Поделиться через


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

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

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

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

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

  • Учетная запись, используемая для входа в 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

Select-AzContext Оба Set-AzContext и могут использоваться для изменения активного контекста Azure. Как описано в статье "Создание нового контекста Azure", создает новый контекст Azure для подписки, Set-AzContext если он не существует, а затем переключает активный контекст на этот.

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

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 см. в разделе Выполнение командлетов PowerShell Azure в заданиях 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

См. также