2016-05-16 59 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

相關問題