azure - 如何使用 Azure 自动化帐户从不同的订阅启动 vm
问题描述
我在同一个租户中有三个订阅,比如 Sub1、Sub2 和 Sub3。我在 Sub1 中创建了自动化帐户,而我的 VM 在 Sub3 中。(由于某些限制,无法在 Sub3 中创建自动化帐户)。我想编写一个将启动 Sub3 VM 的 powershell 脚本。
当我运行Get-AzureRmSubscription时,它只给我当前的订阅,即 Sub1 我的天蓝色自动化脚本如下 -
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Azure..."
Add-AzureRmAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
Get-AzureRmSubscription
# $context = Get-AzureRmSubscription -SubscriptionId {subId}
# Set-AzureRmContext $context
# Start-AzureRmVM -ResourceGroupName "ResourceName" -Name "VMName"
你能指导我怎么做吗?
解决方案
由于您的订阅位于同一租户中,因此您可以在Sub3中直接将 Azure RABC 角色分配给您的 Azure 自动化连接(服务主体) 。然后就可以在Sub3中管理 Azure 资源了
例如
Connect-AzAccount
$sp=Get-AzADServicePrincipal -ApplicationId < the appId you copy>
Set-AzContext -SubscriptionId <the id of sub3>
#assign Contributor role to the connection at subsciprion level
New-AzRoleAssignment -ObjectId $sp.id -RoleDefinitionName Contributor
- 测试
$connectionName = "AzureRunAsConnection"
try
{
# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
"Logging in to Azure..."
Add-AzureRmAccount `
-ServicePrincipal `
-TenantId $servicePrincipalConnection.TenantId `
-ApplicationId $servicePrincipalConnection.ApplicationId `
-CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
if (!$servicePrincipalConnection)
{
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
} else{
Write-Error -Message $_.Exception
throw $_.Exception
}
}
Get-AzureRmSubscription
推荐阅读
- r - 如何在 R 中快速将 1,2,3,4....7 替换为周一,周二,周三,周四 ....?
- azure-eventhub - Azure 事件中心“事件捕获”加密
- angular - 说如何在 Angular 中使用 FormArray 实现动态表单
- python - 关于tensorflow GradientDescentOptimizer的一些问题
- java - Spring Batch JdbcPagingItemReader 分页不起作用
- c++ - 如何以静态方式使用另一个 constexpr 数组初始化一个数组
- pandas - 有没有办法使用 Python Pandas 合并基于子列的父列
- php - 如何省略插入 mysql 数据库的 imap 电子邮件附件的编码字符
- java - “org.springframework.web.HttpMediaTypeNotAcceptableException:找不到可接受的表示”以产生 xml 响应
- python - 出现错误:原因:java.net.SocketTimeoutException:接受超时