“ New-AzureRmNetworkInterface:无法解析请求。”是什么在Azure中阻止了此命令?

时间:2019-05-07 13:26:35

标签: azure powershell

我正在尝试使用脚本Powershell蔚蓝地建立一个体系结构。但是我有一个意外的错误告诉我请求是:“ ReasonPhrase:Bad Request”

该项目的唯一文档是Microsoft doc。在这里,我找到了此命令以及用于创建具有powershell的VM的一些脚本示例。

我的真正问题是,当我使用一个脚本一次运行创建一个VM时,此cmdlet可以工作。但是在此脚本中,我希望首先手动创建所有网络接口,然后将它们合并到其VM。

$LocationName = "West Europe"
$ResourceGroupName = "RGPackage01","RGLab01","RGFileStock01"

######################Variable des machines##################################

<#
.Explication:
Toutes les variables relatives aux configuration des os  
#>

$VMSize = "Standard_DS3"

###################### Variable de réseau ####################################

<#
.Explication:
Il faut un nom DNS pour chaque machine,
mettre en place le nom et la configuration des réseau et VLAN
#>

$DNSNameLabel = "cdsvm" # .westeurope.cloudapp.azure.com
$NetworkName = "VnCDS"
$NICName = "MyNIC1","MyNIC2","MyNIC3"
$PublicIPAddressName = "MyPIP"
$SubnetName = "SubnetPacakger","SubnetTestPacakger","SubnetLABSCCM","SubnetLABLibre"
$SubnetAddressPrefix = "10.30.40.0/26","10.30.40.64/26","10.30.40.128/26","10.30.40.192/26"
$VnetAddressPrefix = "10.30.40.0/24"

##################### Création des groupes de Ressources ###########################

<#
.Explication:
Utilisation d'une boucle pour créer les différents groupe de ressources defini dans la nomenclature
#>

for($i=0;$i -le 2;$i++){
Create-NewRG -matricule $ResourceGroupName[$i] -localisation $LocationName
write-host "Creating RG : $($ResourceGroupName[$i])" -ForegroundColor Green
}


##################### Création du réseau ##########################################

<#
.Explication:
Utilisation de boucle pour créer les différents sous réseau défini dans l'adressage reseau
#>



$SubnetPacakger = New-AzureRmVirtualNetworkSubnetConfig 
-Name $Subnetname[0] 
-AddressPrefix $SubnetAddressPrefix[0]

$SubnetTestPacakger = New-AzureRmVirtualNetworkSubnetConfig 
-Name $Subnetname[1] 
-AddressPrefix $SubnetAddressPrefix[1]

$SubnetLABSCCM = New-AzureRmVirtualNetworkSubnetConfig 
-Name $Subnetname[2] 
-AddressPrefix $SubnetAddressPrefix[2]

$SubnetLABLibre = New-AzureRmVirtualNetworkSubnetConfig 
-Name $Subnetname[3] 
-AddressPrefix $SubnetAddressPrefix[3]

$SubnetGlossaire = $SubnetPacakger,$SubnetTestPacakger,$SubnetLABSCCM,$SubnetLABLibre

$Vnet = New-AzureRmVirtualNetwork 
-Name $NetworkName 
-ResourceGroupName $ResourceGroupName[0] 
-Location $LocationName 
-AddressPrefix $VnetAddressPrefix 
-Subnet $SubnetGlossaire


###################### Création des interfaces réseau ##############################

<#
.Explication:
Creation des interfaces réseau/carte réseau des machines virtuels 
#>

$PIP = New-AzureRmPublicIpAddress 
-Name $PublicIPAddressName 
-DomainNameLabel $DNSNameLabel 
-ResourceGroupName $ResourceGroupName[0] 
-Location $LocationName 
-AllocationMethod Dynamic

$NIC = New-AzureRmNetworkInterface 
-Name $NICName[0] 
-ResourceGroupName $ResourceGroupName[0] 
-Location $LocationName 
-SubnetId $Vnet.Subnets[0].Id 
-PublicIpAddressId $PIP.Id

现在可以使用,问题出在网络接口需要创建子网的事实。我没有创建子网,而只是创建了一个虚拟网络。 因此,我首先使用New-AzureRmVirtualNetworkSubnetConfig创建4个子网的配置,并在创建New-AzureRmVirtualNetwork -Subnet时将它们链接到虚拟网络。

现在,在命令New-AzureRmNetworkInterface中,我可以直接输入参数-SubnetId $Vnet.Subnets[0].Id。 它会在虚拟网络中查找第一个子网ID。

1 个答案:

答案 0 :(得分:0)

$subnetid[1].Id是虚拟网络的ID,而不是子网的ID。 SubnetId的值应类似于

-SubnetId "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ResourceGroup1/providers/Microsoft.Network/virtualNetworks/VirtualNetwork1/subnets/Subnet1"

您错过了/subnets/Subnet1

您应该使用$subnetid[1].Subnets[0].Id作为SubnetId的值。