2017-06-13 3 views
1

すべてのスクリプトでazureリクエストを同時に実行するにはSave-AzureRmProfileを使用していました。 auto login to azure with powershell/インポートされたAzureRMContextには依然としてパスワードが必要です

AzureRmProfileが現在AzureRmContextコマンドレットであるにもかかわらず、システムを最新のバージョン(AzureRM> 4)に更新しなければならなかったのですが、これまでと同じように使用することはできません。

シナリオ

オープンPSコンソールと

Save-AzureRmContext -Profile (Add-AzureRmAccount) -Path myprofile.json 

# List my VMs 
Get-AzureRmVm 

オープン

Import-AzureRmContext -Path myprofile.json 

# List my VMs 
Get-AzureRmVm 
Get-AzureRmVM : Your Azure credentials have not been set up or have expired, please run Login-AzureRMAccount to set up your Azure credentials. 

がどのように私は私のプロフィールを再利用可能な第2のPSコンソールを実行するには、並列実行にロードするには?

答えて

2

コマンドレットにバグがあります。あまりできることはありません(ダウングレードのみ)。

ここでそれを追跡:回避策としてhttps://github.com/Azure/azure-powershell/issues/3954

+1

で固定する必要があることを

$ctx = Import-AzureRmContext -Path <path-to-saved-context> $session = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance $cacheFile = [System.IO.Path]::Combine($session.ProfileDirectory, $session.TokenCacheFile) if (Test-Path $cacheFile) { $session.DataStore.CopyFile($cacheFile, ($cacheFile + ".bak")) } $session.DataStore.WriteFile($cacheFile, [System.Security.Cryptography.ProtectedData]::Protect($ctx.Context.TokenCache.CacheData, $null, [System.Security.Cryptography.DataProtectionScope]::CurrentUser)) $session.TokenCache = New-Object -TypeName Microsoft.Azure.Commands.Common.Authentication.ProtectedFileTokenCache -ArgumentList $cacheFile [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext.TokenCache = $session.TokenCache 

は注意4c74356b41 @おかげか、私はLt5kAを言う必要がなかった:)私はgithubのレポをチェックしましたが、それを発見していない。 – guillem

+0

あなたは実際にこれを解読する最初の人ではなく、物事をより明確にするわけではありません。)@guillem – 4c74356b41

+1

jaja @ 4c74356b41それは私が一度翻訳していますが、それでも明らかでした – guillem

0

を問題は固定または私は私のPSのインストールをダウングレードされていないまで、私はその後、私の並列のScriptBlockに私は置き換えるには、このような呼び出しを行う

$azureAccountName ="[email protected]" 
$Password = "12345678" 
$azurePassword = ConvertTo-SecureString $Password -AsPlainText -Force 
$psCred = New-Object System.Management.Automation.PSCredential($azureAccountName, $azurePassword) 

を使用

Login-AzureRmAccount -Credential $psCred 

私が誇りに思っているソリューションの種類ではありません...それはトリックでした。

2

ここにいくつかの回避策があります。

$ctx = Import-AzureRmContext -Path <path-to-context> 
$ctx.Context.TokenCache.Deserialize($ctx.Context.TokenCache.CacheData) 

より複雑な回避策:あなたはコンテキストをインポートするたび

シンプル、メモリ問題を回避するには、追加する必要があります。これにより永続的なファイルTokenCache.datが作成されます。存在する場合は、この問題をマシン上で回避することができます。新しいPOSHウィンドウで

:この問題は、次のリリース

+0

私は "記憶"スクリプトの変更を最小限に抑える必要があるためです。これはgithubの問題 – guillem

+0

でも参照されていなければなりません。githubの問題の最後に参照されています。また、永続的な修正(7/7) –

関連する問題