Что касается моего опыта работы с учетными записями с поддержкой MFA в сценариях.Единственный способ обойти MFA - это использовать командлеты без параметра -Credential.
Основным вариантом использования MFA является защита от таких вещей, как сценарии, работающие на скомпрометированной учетной записи.
ОБНОВЛЕНИЕ:
Итак, есть способ взломать ваш путь к программному получению токена.Это делается с помощью двоичных файлов ADAL, которые поставляются с установкой модулей Azure и / или других модулей O365.Нет простого способа запросить и сохранить токен в переменной.
Вам потребуется загрузить DLL в свой скрипт, чтобы начать кэширование токена:
Add-Type -Path 'C:\Program Files\WindowsPowerShell\Modules\AzureAD\2.0.x.x\Microsoft.IdentityModel.Clients.ActiveDirectory.dll'
Вы можете приобрестипредварительно получить доступ к токенам с помощью метода AcquireTokenAsync .
$accesstoken = [Microsoft.IdentityModel.Clients.ActiveDirectory.TokenCache]::DefaultShared
$accesstoken.ReadItems() | select DisplayableId, Authority, ClientId, Resource
Приведенный выше метод ReadItem () предоставит вам всю информацию, необходимую для хранения токена в переменной.
$authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList #PLACE AUTHORITY URL HERE#
$client_id = "CLIENT_ID INFO"
$Credential = Get-Credential YOURUSERNAME@COMPANY.COM
$AzureADCred = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserPasswordCredential" -ArgumentList $Credential.UserName,$Credential.Password
$authResult = [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContextIntegratedAuthExtensions]::AcquireTokenAsync($authContext,"https://RESOURCE-URL.COM",$client_Id,$AzureADCred)
Получив токен, вы можете использовать егодля подключения к вашему сеансу, будь то обмен через Интернет, Azure или Office.
$Authorization = "Bearer {0}" -f $authResult.Result.AccessToken
$Password = ConvertTo-SecureString -AsPlainText $Authorization -Force
$Ctoken = New-Object System.Management.Automation.PSCredential -ArgumentList "YourCompanyUserAccount@COMPANY.COM", $Password
Предостережение: они применяются только к токенам доступа и не учитывают токен обновления.Вы можете даже не получить возвращенный токен обновления в зависимости от того, какие двоичные файлы ADAL вы используете.
Чтобы узнать больше о токенах доступа, вы можете узнать больше об этом здесь