в то время как выполнение powershell с использованием учетной записи службы получает ошибку unknown_user_type - PullRequest
0 голосов
/ 15 января 2020

У меня есть один простой скрипт powershell, в котором я авторизирую Salesforce logi c соединитель приложения.

Когда я выполняю скрипт, используя учетные данные учетной записи службы, я получаю сообщение об ошибке ниже -

Connect-AzureRmAccount : unknown_user_type: Unknown User Type
At C:\Users\test.ps1:34 char:5
+     Connect-AzureRmAccount -Credential $pscredential -Tenant $Tenant  ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Connect-AzureRmAccount], AadAuthenticationFailedException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Profile.ConnectAzureRmAccountCommand

что здесь не так, какая-нибудь подсказка?

Я выполняю приведенный ниже скрипт, чтобы авторизовать соединение API Salesforce Connector с azure logi c app

Param(
    [string] $ResourceGroupName = 'ResourceGroupName',
    [string] $Subscription = 'Subscription',
    [string] $ConnectionName = 'ConnectionName',

    #Defines which Authorization type to authenticate the connector with.
    #AuthorizationTypes: 'ServiceAccount', 'ServicePrincipal'
    [string] $AuthorizationType = 'ServiceAccount'
)
#region mini window, made by Scripting Guy Blog
Function Show-OAuthWindow {
    Add-Type -AssemblyName System.Windows.Forms

    $form = New-Object -TypeName System.Windows.Forms.Form -Property @{Width=600;Height=800}
    $web  = New-Object -TypeName System.Windows.Forms.WebBrowser -Property @{Width=580;Height=780;Url=($url -f ($Scope -join "%20")) }
    $DocComp  = {
        $Global:uri = $web.Url.AbsoluteUri
        if ($Global:Uri -match "error=[^&]*|code=[^&]*") {$form.Close() }
    }
    $web.ScriptErrorsSuppressed = $true
    $web.Add_DocumentCompleted($DocComp)
    $form.Controls.Add($web)
    $form.Add_Shown({$form.Activate()})
    $form.ShowDialog() | Out-Null
}
#endregion


$pscredential = Get-Credential
#You should not need to change this Id
$Tenant = Get-AzureRmTenant -TenantId "TenantId"

if ($AuthorizationType -eq 'ServiceAccount') {
    Connect-AzureRmAccount -Credential $pscredential -Tenant $Tenant -Subscription $Subscription
}
elseif ($AuthorizationType -eq 'ServicePrincipal') {
    Connect-AzureRmAccount -ServicePrincipal -Credential $pscredential -Tenant $Tenant -Subscription $Subscription
}

1 Ответ

1 голос
/ 16 января 2020

Как уже упоминалось в комментарии, я полагаю, что вы хотите войти в систему с принципалом службы, я также могу воспроизвести вашу проблему.

enter image description here

Если вы Чтобы войти в систему с принципалом службы, необходимо передать параметр -ServicePrincipal.

Вы можете обратиться к полному сценарию ниже.

$azureAplicationId ="<applicationId>"
$azureTenantId= "<TenantId>"
$azurePassword = ConvertTo-SecureString "<client-secret>" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Connect-AzAccount -Credential $psCred -TenantId $azureTenantId -ServicePrincipal

enter image description here


Кроме , я заметил, что вы используете старую AzureRm команду модуля Connect-AzureRmAccount. Обратите внимание, что модуль AzureRm устарел и больше не будет обновляться, поэтому я рекомендую удалить его и установить новый модуль Az. Если вы все еще хотите использовать старый модуль, просто измените Connect-AzAccount на Connect-AzureRmAccount в моем скрипте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...