No.
Там нет такой простой команды PowerShell, который добавит подсеть к классическому VNET. Если вы проверите API ARM REST для Microsoft/ClassicNetwork и Microsoft/Network, вы увидите, что в модели диспетчера ресурсов «подсетей» управляются как как ресурсы в Vnet, так и как свойство в Vnet, а в классической модели - подсетей "является просто свойством в Vnet.
Поскольку «подсети» - это просто свойство Vnet для классической модели, а «подсети» - это массив объектов, вам всегда нужно как минимум 2 запроса на обновление «подсети». Один из них - получение старых подсетей, а другой - размещение подсетей после добавления новых подсетей в старые подсети.
Однако, если вы используете REST API вместо чистого Azure PowerShell, вам не нужно экспортировать 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 создать основной службы.
Hi Peter, Я предполагаю, что приведенная выше команда предназначена для диспетчера ресурсов, а не для Classic. –
Да, вы правы, я пропустил ваш вопрос. Спасибо за указание. – Peter
Нет проблем Peter :) Оцените, если мы сможем получить его для развертывания Classic. –