web-dev-qa-db-ja.com

デフォルトのAzure RMサブスクリプションを変更する方法

ASMには、-Default(および現在廃止予定)パラメータを使用してデフォルトのサブスクリプションを変更する機能がありました

Select-AzureSubscription -Default

ただし、ARMバージョン

Select-AzureRMSubscription 

-Defaultパラメーターはありません。

デフォルトのARMサブスクリプションを変更するにはどうすればよいですか?私のデフォルトが私が決して使用しないサブスクリプションであることは非常に迷惑です。

説明のために編集:デフォルトサブスクリプションの変更と言うとき、新しいPowerShellセッションごとに接続しているデフォルトサブスクリプションを意味します。

26
Mikee

ステップ1:Get-AzureRmSubscription

すべてのサブスクリプションがリストされます。

ステップ2:Select-AzureRmSubscription -SubscriptionId xxxxx-xxxxx-xxxxxx-xxxx

SubscriptionIDは、Get-AzureRmSubscriptionの出力で確認できます。 SubscriptionNameを使用することもできます。

ステップ3:(Get-AzureRmContext).Subscription

適切なサブスクリプションを選択したことを確認します。

31

私は方法があるとは思わないが、私のために私は私の powershell プロファイルに以下を追加した:

Login-AzureRmAccount -SubscriptionName "My Subscription"

PowerShellをカスタマイズする方法 profile

13
4c74356b41

お客様の要件に応じて、次のコマンドをテストして、自分の側でサブスクリプションを変更し、サブスクリプションを変更することができました。

Get-AzureRmSubscription –SubscriptionName "your subscription" | Select-AzureRmSubscription

ここに私のテストがあります、あなたはそれを参照することができます。

注:この公式のコマンドは、Azure Resource Managerコマンドレットに関する document にあります。

7
Bruce Chen

これは、Azure PowerShellバージョン5で解決されました。

Enable-AzureRmContextAutosave

このコマンドを実行すると、新しいAzure PowerShellセッションはすべて、デフォルトで設定された最後のコンテキストにデフォルト設定されます

Set-AzureRMContext 

コマンド

4
Mark Arnott
Add-AzureRmAccount -Environment [If Needed] -Subscription "[Add Yours]" -ContextName "Default"
2
grefly

カバーされない2つのシナリオは、編集するPowerShellプロファイルが既にある場合と、PowerShell ISEのPowerShellプロファイルを変更する場合です。

ARMでサブスクリプションを設定する最も簡単な方法は、PowerShellプロファイルを 4c74356b41 が示すように使用することです。

PowerShellプロファイルへのパスを見つけるには、$Profile | Format-Listを使用します。

通常、Windows PowerShellプロファイルは..\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1にあります。

PowerShell ISEプロファイルは通常..\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1にあります

どちらかが欠落している場合は、ISEまたはPowerShellウィンドウからNew-Item -path $profile -type file –forceを使用して空のファイルを作成します。

すべてのPowerShellプロファイルファイルとそのパスを一覧表示する場合は、-Forceスイッチ$Profile | Format-List -Forceを追加します。

[email protected]などのMicrosoftアカウントを使用している場合は、これを.ps1ファイルLogin-AzureRmAccount -TenantId "Tenant ID" -SubscriptionId "Subscription ID"に追加します。 Get-AzureRmSubscription | Format-Listを使用して、すべてのサブスクリプションおよびテナントIDのリストを取得できます。

APowerShell の回答も使用できますが、Subscription Nameパラメーターは使用しない方がいいでしょう。サブ名が複数ある場合にサブ名が変わることは珍しくありません。SubIDとTenantIDは変わりません。

[email protected]のような仕事用アカウントを使用してログインしている場合は、次のようなものを使用して、ログインおよびサブスクリプションの選択全体を自動化できます。

$AzureAcct = "[email protected]"
$AzurePwd = ConvertTo-SecureString "P@s$w0rd" -AsPlainText -Force
$AzureCreds = New-Object System.Management.Automation.PSCredential($AzureAcct, $AzurePwd)

$Login-AzureRmAccount -Credential $AzureCreds -TenantId "Tenant ID" -SubscriptionId "Subscription ID"

パラメーター-SubscriptionIdのみを使用すると、アカウントが複数のAzureサブスクリプションに追加された場合にログインエラーが発生する可能性があるため、-TenantIdも使用することが重要です。

1
acruns

私は同じ課題を抱えています-AzureRMモジュールの[version 4.2.0]にはコマンドレットがないようです:

Get-Command set-*subscription* -Module AzureRM

Get-AzureSubscription(Azureモジュール)によって返されるサブスクリプションオブジェクトは、GetAzureRmSubscriptionによって返されるものとは明らかに異なります。つまり、ARM-onesにはIsDefaultプロパティはありません。

4c74356b41の考え方に従って、プロファイルに「邪魔にならない」行を追加できます。

$PSDefaultParameterValues["Login-AzureRmAccount:SubscriptionName"] = "my subscriptionName"
1
APowerShell