2017-08-22 13 views
2

Azureのカスタムスクリプト拡張を実行したいアズールの警告を設定するためのスクリプトを書いていますが、まだ実行するために必要なパラメータの1つAdd-AzureRmMetricAlertRuleTargetResourceIdです。警告が必要なVMのResourceIdです設定する。VMスクリプトのResourceIdを取得する方法は、PowerShellを使用してAzureで実行していますか?

PowerShellを使って現在のVMのResourceIdを取得するにはどうすればいいですか?

私が試したことはすべて、ResourceNameを持っているとみなされます。または、サブスクリプションでVMのリストを反復処理しますが、私が興味を持っているのはスクリプトが実行されている特定のインスタンスです。

+1

が見える(しかし、回避策は、おそらくあります):https://feedback.azure.com/forums/216843-virtual-machines/suggestions/6204911-provide-virtual-machine-instance-metadata-support –

+1

@MarkWragg素晴らしい、ありがとう、これは私が探していたものです。あなたはコメントとしてではなく答えとしてそれを置くことができますか? :) –

答えて

1

アズールは、AWS/GCEによって提供されるのと同様のinstance metadata service (in preview)を有する。

curl -H Metadata:true http://169.254.169.254/metadata/instance?api-version=2017-03-01 

サーバーからインスタンスメタデータを取得することができます。

この機能は、ここで議論/要求されました:それはまだ機能しませんようにhttps://feedback.azure.com/forums/216843-virtual-machines/suggestions/6204911-provide-virtual-machine-instance-metadata-support

0

私の理解が正しい場合は、次のコマンドを使用してVMのリソースIDを取得できます。

(get-azurermvm -ResourceGroupName shuihv -Name shui).id 

また、VMのリソースグループ名とVM名を知っている場合は、IDを構造化することもできます。フォーマットは以下のようにする必要があります:

/subscriptions/<subscription id>/resourceGroups/<group name>/providers/Microsoft.Compute/virtualMachines/<vm name> 

更新:

としてあなたはVMの名前を取得するためにAzure metadataを使用することができ、と述べました。 VMの名前によれば、Azure PowerShellを使用してVMのリソースグループ名を取得できます。

$vm=get-azurermvm |Where-Object {$_.Name -eq "shui"} 

$vm.ResourceGroupName 

次に、リソースIDを構造化できます。

+0

ありがとう、質問に記載されているように - 私はあなたがVMのResourceNameを知っているときにResourceIdを取得するのは簡単だと同意します。しかし、ResourceNameがわからない場合はどうすればよいですか? –

+0

@LechMigdal Mark Wraggが言っているように、 'curl -H Metadata:True 'を使うことができます。http://169.254.169.254/metadata/instance?api-version=2017-04-02&format=json" | VMの名前とその他の情報を取得するには、「jq。」を使用しますが、現在、VMのリソースグループ名を取得することはできません。可能であれば、ループを使用して、VMの名前に従ってVMのリソースグループ名を取得することができます。 ' –

関連する問題