Объекты контекста 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, связанных с клиентом. В документации или при работе с Active Directory клиентов часто называют организациями.
- Ссылка на кэш токена — сохраненный токен аутентификации для доступа к облаку Azure. Настройки автосохранения контекста определяют место и срок хранения этого токена.
Дополнительные сведения об этих терминах см . в терминологии Microsoft Entra. Токены аутентификации, используемые контекстами Azure, подобны другим сохраненным токенам, являющимся частью постоянного сеанса.
При входе с помощью Connect-AzAccount
для подписки по умолчанию создается как минимум один контекст Azure. Объект, возвращаемый Connect-AzAccount
является контекстом Azure по умолчанию, используемым до конца сеанса PowerShell.
Получение контекстов Azure
Доступные контексты Azure извлекаются с помощью командлета Get-AzContext. Список доступных контекстов с параметром ListAvailable :
Get-AzContext -ListAvailable
Или получите контекст по имени:
Get-AzContext -Name 'mycontext'
Имена контекстов могут отличаться от имен связанных подписок.
Внимание
Доступные контексты Azure не всегда являются доступными подписками. Контексты Azure представляют только локально хранимую информацию. Вы можете получить подписки с помощью командлета Get-AzSubscription.
Создание нового контекста Azure из сведений о подписке
Командлет Set-AzContext используется как для создания новых контекстов Azure, так и для их установки в качестве активного контекста. Самый простой способ создать новый контекст Azure — использовать существующие сведения о подписке. Командлет предназначен для получения объекта вывода из Get-AzSubscription
в качестве переданного значения и настройки нового контекста Azure:
Get-AzSubscription -SubscriptionName 'MySubscriptionName' |
Set-AzContext -Name 'MyContextName'
При необходимости укажите либо имя, либо идентификатор подписки и идентификатор клиента:
Set-AzContext -Name 'MyContextName' -Subscription 'MySubscriptionName' -Tenant '00000000-0000-0000-0000-000000000000'
Если параметр Name опущен, имя и идентификатор подписки используются в качестве имени контекста в формате "Имя подписки" (идентификатор подписки).
Изменение активного контекста Azure
Для изменения активного контекста Azure можно использовать как Set-AzContext
, так и Select-AzContext. Как описано в разделе Создание нового контекста Azure, Set-AzContext
создает новый контекст Azure для подписки, если он не существует, а затем делает этот контекст активным.
Select-AzContext
следует использовать только с существующими контекстами Azure. Он работает аналогично Set-AzContext -Context
, но предназначен для использования с конвейером:
Set-AzContext -Context $(Get-AzContext -Name 'mycontext') # Set a context with an inline Azure context object
Get-AzContext -Name 'mycontext' | Select-AzContext # Set a context with a piped Azure context object
Как и многие другие команды управления учетными записями и контекстом в Azure PowerShell, и Select-AzContext
поддерживают параметр Scope, Set-AzContext
чтобы вы могли контролировать, сколько времени активен контекст. Область позволяет изменить активный контекст одного сеанса, не изменив значение по умолчанию:
Get-AzContext -Name 'mycontext' | Select-AzContext -Scope Process
Чтобы избежать переключения контекстов для всего сеанса PowerShell, команды Azure PowerShell с параметром AzContext можно выполнять в заданном контексте:
$context = Get-AzContext -Name "mycontext"
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 Save-AzContext -Profile $profileObject -Path other-context.json # Save a context object Import-AzContext -Path other-context.json # Load the context from a file and set it to the current context
Предупреждение
Отключение автосохранения контекста не удаляет сохраненную информацию контекста. Чтобы удалить сохраненную информацию, используйте командлет Clear-AzContext. Подробнее об удалении сохраненных контекстов см. раздел Удаление контекстов и учетных данных.
Каждая из этих команд поддерживает параметр Scope , который может применяться Process
только к текущему выполняемому процессу. Например, чтобы убедиться, что вновь созданные контексты не сохраняются после выхода из сеанса PowerShell:
Disable-AzContextAutosave -Scope Process
$context2 = Set-AzContext -Subscription 'sub-id' -Tenant 'other-tenant'
Информация контекстов и токены хранятся в каталоге $env:USERPROFILE\.Azure
в Windows и в $HOME/.Azure
— на других платформах. Конфиденциальная информация, такая как идентификаторы подписок и идентификаторы арендаторов, может по-прежнему отображаться в сохраненной информации через журналы или сохраненные контексты. Чтобы узнать, как очистить сохраненную информацию, см. раздел Удаление контекстов и учетных данных.
Удаление контекстов Azure и сохраненных учетных данных
Для удаления контекстов и учетных данных Azure выполните следующие действия:
Выйдите из учетной записи с помощью командлета Disconnect-AzAccount. Используя учетную запись или контекст, можно выйти из любой учетной записи.
Disconnect-AzAccount # Disconnect active account Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name Disconnect-AzAccount -ContextName 'subscription2' # Disconnect by context name Disconnect-AzAccount -AzureContext $contextObject # Disconnect using context object information
При отключении всегда удаляются сохраненные токены аутентификации и очищаются сохраненные контексты, связанные с отключенным пользователем или контекстом.
Используйте Clear-AzContext. Этот командлет всегда удаляет сохраненные контексты и маркеры проверки подлинности, а также обеспечивает выход.
Удаление контекста с помощью Remove-AzContext:
Remove-AzContext -Name 'mycontext' # Remove by name Get-AzContext -Name 'mycontext' | Remove-AzContext # Remove by piping Azure context object
При удалении активного контекста вы будете отключены от Azure и вам потребуется повторно выполнить проверку подлинности.
Connect-AzAccount
См. также
Azure PowerShell
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по