2016-05-16 31 views
10

Ho provato a seguire i comandi per ottenere un'esperienza di accesso noprompt più veloce ma ogni volta trovo il popup di accesso. Ho anche provato a utilizzare inizialmente il certificato, ma dal momento che non si è dimostrato funzionante, ho tentato con l'id titolare. Qualsiasi aiuto o suggerimento su come avere un accesso veloce e senza interruzioni anziché interattivo.Come accedere senza prompt?

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

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

Login-AzureRmAccount -TenantId 754XXXXXXXXXXX5d10d8XXX 

Oppure, è necessario andare sempre tramite prompt di accesso interattivo. Richiedi puntatori e grazie in anticipo per considerazione e tempo.

+0

Penso, ho capito il motivo. Dopo aver letto msdn, trovo questa sezione => Questo metodo di accesso non interattivo funziona solo con un account di lavoro o scuola. Un account di lavoro o scuola è un utente gestito dal lavoro o dalla scuola e definito nell'istanza di Azure Active Directory per il lavoro o la scuola. –

risposta

3

Se si utilizza un Live ID, non è possibile accedere senza un prompt. Non è possibile accedere in modo non interattivo.

Una volta effettuato l'accesso è possibile salvare le credenziali con Save-AzureRmProfile questo salverà il token di accesso al disco, che è possibile utilizzare per il login di nuovo con Select-AzureRmProfile Tuttavia quella pedina non ha scadenza, quindi è necessario effettuare nuovamente il login.

Per accedere senza chiedere conferma, è necessario creare un account Azure Active Directory.

è possibile utilizzare qualcosa di simile

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

È inoltre possibile creare un oggetto credenziale, in modo da poter utilizzare questo modo non interattivo.

13

È possibile utilizzare il parametro -Credential e DPAPI per accedere.

Innanzitutto, eseguire il seguente PowerShell una volta per memorizzare una password protetta per il proprio account.

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

E quindi, è possibile utilizzare il seguente script per accedere.

# 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 

Un altro modo sarebbe utilizzare Service Principal. Innanzitutto, è necessario seguire the article per creare un principal di servizio

E quindi, utilizzare il seguente script per accedere.

$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

Non hai il pieno controllo delle autorizzazioni per un account Azure Active Directory? (o un account di Live ID per quella materia) - e non sarebbe almeno un po 'meglio usare DPAPI per crittografare le credenziali a riposo? Piuttosto che suggerire agli utenti le credenziali crude del codice duro negli script –

+0

Grazie per averlo indicato. Aggiornerò la mia risposta –

+0

La soluzione del servizio principale ha funzionato per me. – zapoo

6

potrebbe essere tardi per inviare ma ho trovato un'altra soluzione semplice in modo dagli elenchi qui in modo da aiutare gli altri:

  1. Accedere per conto azzurro con il comando Login-AzureRmAccount.
  2. Salvare il contesto nel file Json utilizzando il comando Save-AzureRmContext -Path "E:\AzureProfile.json".
  3. Ora è possibile effettuare il login senza prompt utilizzando il comando: Import-AzureRmContext -Path "E:\AzureProfile.json".
+0

Le cose sono cambiate: 'Save-AzureRmProfile -Force -Path". \ AzureProfile.json "' e 'Select-AzureRmProfile -Path". \ AzureProfile.json "' invece di 'Save-AzureRmContext' e 'Import-AzureRmContext', rispettivamente. [https://docs.microsoft.com/en-us/powershell/module/azurerm.profile/select-azurermprofile?view=azurermps-3.8.0] – rasx

+1

@rasx In realtà è il contrario, il tuo approccio è il vecchio uno (da AzureRM PowerShell 3.8.0) e quello nella risposta originale è il nuovo. – Livven