号
古典vNetにサブネットを追加しますそのような簡単なPowerShellのコマンドはありません。 Microsoft/ClassicNetworkとMicrosoft/Networkの両方のARM REST APIをチェックすると、Resource Managerモデルでは、「サブネット」はVnetのリソースとして、またVnetのプロパティとして管理されています。一方、従来のモデルでは、サブネット "はVnetの単なるプロパティです。
"サブネット"はVnetのクラシックモデルの単なるプロパティで、 "サブネット"はオブジェクトの配列なので、 "サブネット"を更新するためには常に少なくとも2つの要求が必要です。 1つは古いサブネットを取得し、もう1つは新しいサブネットを古いサブネットに追加した後にサブネットを配置することです。
ただし、純粋なAzure PowerShellの代わりにREST APIを使用すると、xmlファイルをまったくエクスポートする必要はありません。ここに私が書いたスクリプトがあります。
# Adding the AD library to your PowerShell Session.
Add-Type -Path 'C:\Program Files\Microsoft Azure Active Directory Connect\Microsoft.IdentityModel.Clients.ActiveDirectory.dll'
# This is the tenant name of you subscription. You can use tenant id instead if you want.
$tenantName = "<you tenant name>"
$authString = "https://login.windows.net/" + $tenantName
# Create a authentication context with the above authentication string.
$authenticationContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext ($authString, $false)
# Client Id and key of your AD application. You can create an AD application through Azure
# Portal or PowerShell.
$clientId = "<the client id of your AD application>"
$key = "<the key of your AD application>"
# Create a client credential with the above client id and key.
$clientCred = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.ClientCredential ($clientId, $key)
# The resource URI for your token. If you are using ARM, "https://management.azure.com/"
# is good too.
$resource = "https://management.core.windows.net/"
# Acquire access token from server.
$authenticationResult = $authenticationContext.AcquireToken($resource, $clientCred);
# Use the access token to setup headers for your http request.
$authHeader = $authenticationResult.AccessTokenType + " " + $authenticationResult.AccessToken
$headers = @{"Authorization"=$authHeader; "Content-Type"="application/json"}
# Send a request to get the Vnet you want to update.
$vnet = Invoke-RestMethod -Method GET -Uri "https://management.azure.com/subscriptions/<your subscription id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/<your vnet>?api-version=2016-04-01" -Headers $headers
# Create a new subnet from a Json string. and add it to the subnets of your Vnet.
$newSubnet = ConvertFrom-Json '{"name": "newSubnet","addressPrefix": "10.34.0.0/29"}'
$vnet.properties.subnets += $newSubnet
# Convert the Vnet object into a Json string. This will be used as request body in the second http request.
$body = ConvertTo-Json $vnet -Depth 3
# Send another http request to update your Vnet.
Invoke-RestMethod -Method PUT -Uri "https://management.azure.com/subscriptions/<your subscription id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/<your vnet>?api-version=2016-04-01" -Headers $headers -Body $body
注:私のスクリプトを使用するために、あなたがサービスプリンシパルを作成するためにthis tutorialに従う必要があります。
こんにちはピーター、 私は上記のコマンドは、リソースマネージャの展開であり、クラシックではないと思います。 –
はい、あなたの質問を読んでいます。指摘してくれてありがとう。 – Peter
問題はありませんPeter :) ありがとうございました。 –