2016-05-16 75 views
10

我尝试了以下命令,以获得更快的登录体验,但每次我找到登录弹出窗口。我甚至尝试使用证书最初,但由于没有证明工作,尝试与租客身份证。任何关于如何拥有无缝和快速登录而不是互动的帮助或建议。如何在没有提示的情况下登录?

Login-AzureRmAccount -SubscriptionId 1238154XXXXfd-1c4121796e58 -TenantId 754XXXXXXXXXXX5d10d8XXX 

Add-AzureRmAccount -Tenant "754XXXXXXXXXXX5d10d8XXX" -SubscriptionId "1238154XXXXfd-1c4121796e58" 

Login-AzureRmAccount -TenantId 754XXXXXXXXXXX5d10d8XXX 

或者,是否必须始终通过交互式登录提示进行操作?请求指针并提前感谢您的考虑和时间。

+0

我想,我找到了原因。读完msdn后,我发现这部分=>这种非交互式登录方法只适用于工作或学校帐户。工作或学校帐户是由您的工作或学校管理的用户,并在Azure Active Directory实例中为您的工作或学校定义。 –

回答

3

如果您使用的是Live ID,则无法在没有提示的情况下登录。您无法以非交互方式登录。

一旦你登录,你可以保存凭据与Save-AzureRmProfile这将登录凭证保存到磁盘,然后你可以用它来与Select-AzureRmProfile再次登录但是该令牌过期了,所以你就需要重新登录。

为了无需提示即可登录,您需要创建Azure Active Directory帐户。

然后,您可以使用类似这样

$cred = Get-Credential 
Add-AzureRmAccount -Credential $cred 

您也可以建立一个证书对象,所以你可以使用这个非交互。

13

您可以使用-Credential参数和DPAPI登录。

首先,运行以下PowerShell一次以存储您帐户的安全密码。

Read-Host "Enter Password" -AsSecureString | ConvertTo-SecureString ` 
-AsPlainText -Force | ConvertFrom-SecureString | Out-File "C:\Password.txt" 

然后,您可以使用以下脚本来登录。

# The azure account here must not be a Live ID. 
$username = "<your Azure account>" 
$SecurePassword = Get-Content "C:\Password.txt" | ConvertTo-SecureString 
$cred = new-object -typename System.Management.Automation.PSCredential ` 
    -argumentlist $username, $SecurePassword 

Login-AzureRmAccount -Credential $cred 

另一种方式是使用服务负责人。首先,您应该按照the article创建服务负责人

然后,使用以下脚本进行登录。

$clientID = "<the client id of your AD Application>" 
$key = "<the key of your AD Application>" 
$SecurePassword = $key | ConvertTo-SecureString -AsPlainText -Force 
$cred = new-object -typename System.Management.Automation.PSCredential ` 
    -argumentlist $clientID, $SecurePassword 

Add-AzureRmAccount -Credential $cred -Tenant "xxxx-xxxx-xxxx-xxxx" -ServicePrincipal 
+0

您没有完全控制Azure Active Directory帐户的权限? (或者这个问题的Live ID账户) - 使用DPAPI来加密静态证书至少不会更好一点吗?而不是建议人们将原始凭证硬编码到脚本中 –

+0

感谢您指出。我会更新我的答案。 –

+0

Service Principal解决方案为我工作。 – zapoo

6

可能会晚点到职位,但我发现了另一个简单的解决方案,使上市下来,在这里,以帮助他人:

  1. 登录到蔚蓝的帐户命令Login-AzureRmAccount
  2. 使用命令Save-AzureRmContext -Path "E:\AzureProfile.json"将上下文保存在Json文件中。
  3. 现在您可以使用命令:Import-AzureRmContext -Path "E:\AzureProfile.json"而无需提示即可登录。
+0

事情发生了改变:Save-AzureRmProfile -Force -Path“。\ AzureProfile.json”和'Select-AzureRmProfile -Path“。\ AzureProfile.json”'而不是'Save-AzureRmContext'和'Import-AzureRmContext',分别。 [https://docs.microsoft.com/zh-cn/powershell/module/azurerm.profile/select-azurermprofile?view=azurermps-3.8.0] – rasx

+1

@rasx实际上是相反的,你的方法是旧的一个(来自AzureRM PowerShell 3.8.0),原答案中的一个是新的。 – Livven

相关问题