【发布时间】:2019-06-25 16:32:32
【问题描述】:
我正在尝试编写一些 powershell 脚本,它必须结合 Az cmdlet 和 AzureRM 来完成我想做的一些事情。
当我在同一个脚本中调用 all 时,真正发生了什么: 连接-AzAccount 连接-AzureAD 连接-AzureRMAccount
最初,我调用 Get-Credential 并将其保存在一个变量中。 然后我使用这些凭据在 Connect-AzAccount 中填充 -Credential
然后由于多重身份验证,我必须调用 Connect-AzureAD,它会提示一个弹出窗口,允许用户从 MFA 文本到手机输入电子邮件、密码和代码。
在脚本的后面部分,RM 版本中有一些 cmdlet,因此我使用上面的先前凭据调用 Connect-AzureRMAccount。
$credentials = Get-Credential
$azureCredentials = New-Object System.Management.Automation.PSCredential ($credentials.UserName, $credentials.Password)
Connect-AzAccount -Credential $azureCredentials -Tenant $tenantID -SubscriptionId $subscriptionID
Connect-AzureAD -Tenant $tenantID
Connect-AzureRMAccount -Credential $azureCredentials -Tenant $tenantID -SubscriptionId $subscriptionID
在调用多个不同 Connect cmdlet 的整个脚本期间,在身份验证方面实际发生了什么。
由于某种原因,有一个特定的 cmdlet
$AppRegistration = New-AzureADApplication -DisplayName $appName -HomePage $AppURI -IdentifierUris $AppURI -ReplyUrls $AppURI -PasswordCredentials $psadCredential
我在 Powershell 中收到一个错误,告诉我需要再次调用 Connect-AzureAD,即使它已经在脚本期间调用过一次。 MFA 会超时吗?
如何避免在运行脚本后让用户多次登录?
【问题讨论】:
-
我的评论没有帮助。但我想说,我感受到了你的痛苦。 MFA 使 Azure 中的自动化成为一个巨大的痛苦。
-
创建一个具有证书身份验证的服务主体,授予它对所需资源的权限,并使用它进行连接。这避免了用户必须登录。或者这应该与订阅无关?
-
如果我的回复有帮助,请标记为答案(在我的回复左侧,有标记选项),谢谢。
标签: azure powershell visual-studio-code azure-active-directory