Actuellement, j'ai deux abonnements: S01 et S02. J'ai un runbook fonctionnant dans S02 qui doit accéder aux ressources dans S01.Comment accéder à un abonnement différent à partir d'un runbook
Lorsque j'exécute la commande Get-AzureRmSubscription -SubscriptionName S01
, il ne trouve même pas l'abonnement. Ci-dessous un exemple de code et de sortie:
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection = Get-AutomationConnection -Name $connectionName
Write-Output "Logging in to Azure..."
$Account = Add-AzureRmAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint `
-Verbose `
-ErrorAction Stop
Write-Output "***** LOGGED IN ($((Get-AzureRmContext).Subscription.SubscriptionName)). *******"
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
}
else
{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
Write-Output "Current subscription using Get-AzureRmSubscription:"
Get-AzureRmSubscription
Write-Output "==============================================================="
Write-Output "Switch subscription using Select-AzureRmSubscription:"
Get-AzureRmSubscription -SubscriptionName "S01" | Select-AzureRmSubscription
Write-Output "==============================================================="
Write-Output "Switch subscription using Set-AzureRmContext:"
Set-AzureRmContext -SubscriptionName "S01"
Write-Output "==============================================================="
Sortie:
Logging in to Azure...
VERBOSE: Performing the operation "log in" on target "ServicePrincipal account in environment 'AzureCloud'".
***** LOGGED IN (S02). *******
Current subscription using Get-AzureRmSubscription:
WARNING: Unable to acquire token for tenant 'Common'
SubscriptionId : 2f301a20-22a3-b321-2a3c-829ac3d4e39a
SubscriptionName : S02
State : Enabled
TenantId : e2g374a3-8732-3466-9876-a7cd32b208de
CurrentStorageAccountName :
===============================================================
Switch subscription using Select-AzureRmSubscription:
WARNING: Unable to acquire token for tenant 'Common'
ERROR: Get-AzureRmSubscription : Subscription S01 was not found in tenant . Please verify that the subscription
exists in this tenant.
At line:37 char:2
+ Get-AzureRmSubscription -SubscriptionName "S01" | Sele ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Get-AzureRmSubscription], PSArgumentException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Profile.GetAzureRMSubscriptionCommand
===============================================================
Switch subscription using Set-AzureRmContext:
ERROR: Set-AzureRmContext : Provided subscription S01 does not exist
At line:41 char:2
+ Set-AzureRmContext -SubscriptionName "S01"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Set-AzureRmContext], ArgumentException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Profile.SetAzureRMContextCommand
===============================================================
Je suppose que tout tourne autour de la AzureRunAsConnection et AzureRunAsCertificate et en utilisant le ServicePrincipal. Je suppose que je dois me connecter en utilisant AzureRunAsConnect de S01, ce qui signifie que je dois obtenir le certificat de S01 et S02, mais je n'ai pas beaucoup de chance d'exporter et d'importer le RunAsCertificate de S01, en S02.
J'ai essayé de créer ma propre application AD, mais je n'arrive pas à l'obtenir non plus.
Je suis sûr que cela doit être possible, mais comment? Suis-je proche et quelle est la bonne façon?
P.S. Les deux abonnements "partagent" la même Azure AD.
TIA
Merci. Donc, je suis sur le bon chemin. Je suivais un peu cette page, mais je suis tombé sur un "AsymmetricX509Cert". Même si je courais le script sur Windows 10, il a la bonne version du module PKI. Si je me souviens bien, j'ai besoin d'installer quelque chose pour me donner le bon espace de noms. Je vais essayer encore une fois et faire un rapport. Merci. – woter324
Essayez de commenter: # $ KeyCredential.Type = "AsymmetricX509Cert" # $ KeyCredential.Usage = "verify" Il a fonctionné pour moi. –