azure - “New-AzureRmNetworkInterface:无法解析请求。” 是什么阻止了 Azure 中的此命令?
问题描述
我正在尝试使用脚本 Powershell 在 azure 中设置架构。但我有一个意外错误告诉我请求是:“ReasonPhrase:错误请求”
我对这个项目的唯一文档是 microsoft doc。在这里,我找到了这个命令和一些使用 powershell 创建 VM 的脚本示例。
我真正的问题是,当我使用在一次运行中创建一个 VM 的脚本时,这个 cmdlet 可以工作。但在这个脚本中,我希望先创建所有网络接口,然后将它们合并到他们的虚拟机中。
$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
这现在有效,问题在于网络接口需要创建子网这一事实。我没有创建子网,只创建了一个虚拟网络。因此,我首先创建 4 个子网的配置,New-AzureRmVirtualNetworkSubnetConfig
并在创建时将它们链接到虚拟网络New-AzureRmVirtualNetwork -Subnet
。
现在在命令New-AzureRmNetworkInterface
中我可以在参数中正确-SubnetId $Vnet.Subnets[0].Id
。它将在虚拟网络中查找第一个子网 ID。
解决方案
$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 的值。
推荐阅读
- java - 为什么这里需要“String.class”?
- node.js - 如何在node.js中为jade中的每个循环制作
- ckan - 停止/启动ckan docker容器后“未找到数据集”
- ssas - SSAS表格模型:具有相同维度表的两个关系
- redirect - AWS Cognito 电子邮件确认未重定向到我的网站
- git - GIT 将分支代码与最新的修补程序代码合并
- sql - 如何使用 sql select 语句中的列将公式写为列
- python - 熊猫数据框函数返回日期最近的行并且其中一列包含输入值,抛出错误
- angular - Angular 7如何从多个输入上传文件
- spring - 如何使用 @MockBean 和 MockMvc 将一些带有 HTTP POST 的数据附加到模拟存储库