Заранее спасибо.
Вкратце, я работаю в команде, управляющей несколькими Microsoft CSP (партнерскими центрами), время от времени кто-то просит нас запустить сценарий, который выполняет c действия или захватывает конкретную c информацию от всех 30 CSP, которыми мы управляем, и от всех клиентов под ними
Ранее мы использовали для хранения всех имен пользователей, паролей, идентификаторов TenantID, идентификаторов WebApp в файле CSV и создавали сценарий, который запускается на каждом raw, чтобы автоматически получать необходимую информацию для каждого CSP без запроса учетных данных, используя следующую команду:
$credential = (New-Object –TypeName System.Management.Automation.PSCredential –argumentlist $AdminName ,(ConvertTo-SecureString $AdminPassword –AsPlainText –Force))
И затем вызвать его во всех модулях, как показано ниже:
#MSonline
Connect-Msolservice –Credential $Credential
#ExchangeOnline
$session = New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri https://outlook.office365.com/powershell-liveid?DelegatedOrg=$Customerdomain –Credential $credential –Authentication Basic –AllowRedirection
Import-PSSession $Session
#Partner Center
Add-PCAuthentication -cspappID $NAtive_clientid -cspDomain $domain -credential $credentials
Connect-MsolService -Credential $credentials
Затем MFA был применен ко всем CSP, хотя и безопасным, но это представляло проблему с автоматизацией наших скриптов. Каждый раз, когда нас просят запустить скрипт, нам нужно было бы войти как минимум 1 раз вручную, чтобы ввести свои учетные данные MFA, чтобы иметь возможность запускать скрипт на каждом CSP по отдельности.
Модули, к которым мы обычно подключаемся, являются : PartnerCenter MSOnline CsOnline AzureRM AzureAD
Microsoft предоставила шаги, чтобы обойти это с помощью безопасных модулей API: https://docs.microsoft.com/en-us/powershell/partnercenter/secure-app-model?view=partnercenterps-1.5
Я создал новые приложения с новыми секретами и перезвонил, сумел получить refre sh токен и успешно интегрировал его в модуль PartnerCenter следующим образом:
Connect-PartnerCenter -ApplicationId $NAtive_clientid -RefreshToken $refresh_token
Теперь я пытаюсь сделать то же самое для других модулей, к которым я обращаюсь, согласно В приведенном выше документе я мог бы сделать то же самое для MS Online и для Azure AD, просто получив 3 других токена (Graph Token, Azure AD токен и Azure токен)
$credential = Get-Credential
$refreshToken = 'Your-Refresh-Token-Value'
$azureToken = New-PartnerAccessToken -RefreshToken $refreshToken -Resource https://management.azure.com/ -Credential $credential -TenantId '<Your Tenant Id>'
$graphToken = New-PartnerAccessToken -RefreshToken $refreshToken -Resource https://graph.microsoft.com -Credential $credential -TenantId '<Your Tenant Id>'
$aadGraphToken = New-PartnerAccessToken -RefreshToken $refreshToken -Resource https://graph.windows.net -Credential $credential -TenantId '<Your Tenant Id>'
#MS Module
Connect-MsolService -AdGraphAccessToken $aadGraphToken.AccessToken -MsGraphAccessToken $graphToken.AccessToken
# Az Module
Connect-AzAccount -AccessToken $azureToken.AccessToken -GraphAccessToken $graphToken.AccessToken -TenantId '<TenantId>'
# AzureRM Module
Connect-AzureRmAccount -AccessToken $azureToken.AccessToken -GraphAccessToken $graphToken.AccessToken -TenantId '<TenantId>'
При применении этого и, выполнив следующую команду, я получаю сообщение об ошибке:
New-PartnerAccessToken -RefreshToken $refreshToken -Resource https://management.azure.com/ -Credential $credential -TenantId '<Your Tenant Id>'
New-PartnerAccessToken : Cannot validate argument on parameter 'RefreshToken'. The argument is null or empty. Provide an argument
that is not null or empty, and then try the command again.
At line:1 char:38
+ New-PartnerAccessToken -RefreshToken $refreshToken -Resource https:// ...
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [New-PartnerAccessToken], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Store.PartnerCenter.PowerShell.Commands.NewPartnerAccessT
oken
После некоторого исследования я обнаружил, что параметр "-resource" больше не существует в соответствии с документацией: https://docs.microsoft.com/en-us/powershell/module/partnercenter/new-partneraccesstoken?view=partnercenterps-3.0
Тем не менее, согласно документации, относящейся к MSOnline, он показывает, что я должен иметь возможность использовать его: https://docs.microsoft.com/en-us/powershell/module/msonline/connect-msolservice?view=azureadps-1.0
Теперь я Я застрял без параметра ресурса Я не могу получить токены, необходимые для использования 3-х модулей.
Мой вопрос, есть ли другой способ использовать идентификатор приложения, refre sh токен, секрет, идентификатор арендатора для аутентификации с использованием powershell без вмешательства человека, если нет, как я могу заставить вышеуказанный метод работать для других модулей? так же, как я делал с партнерским центром.