На самом деле я не рекомендую смешивать Azure Powershell и CLI вместе.Если вы настаиваете на этом, я попробовал ваш сценарий, я не смог воспроизвести вашу проблему, она работает нормально.По ошибке, вы можете попробовать передать --subscription
, это также работает.
$sp_appid = (Get-AzADServicePrincipal -DisplayName joywebapp2).ApplicationId.Guid
$sp_secret = (Get-AzKeyVaultSecret -VaultName joykeyvault1 -Name joywebapp2).SecretValueText
$tenant_Id = "xxxxxxxxxxxx"
$subscription_Id = "xxxxxxxxxxx"
az login --service-principal --username $sp_appid --password $sp_secret --tenant $tenant_Id --subscription $subscription_Id
Примечание : Из-за устаревшего модуля AzureRM
powershell, я использую новый модуль Az
powershell, если вы хотите перейти на Az, см. Ссылку .(Возможно, это не является причиной проблемы, но я рекомендую обновить ее.)
Обновление :
Мы должны использовать AZ CLI простодля свойства, которое мы пытаемся получить ... не существует эквивалента PowerShell.
На самом деле вы можете войти в систему с принципалом службы с помощью powershell, strong password
является секретом, подробнее см. в этом сообщение .
$azureAplicationId ="Azure AD Application Id"
$azureTenantId= "Your Tenant Id"
$azurePassword = ConvertTo-SecureString "strong password" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Add-AzureRmAccount -Credential $psCred -TenantId $azureTenantId -ServicePrincipal