Azure资源pipe理器使用PowerShell安全规则实现

我一直在试图通过PowerShell推动Azure NetworkSecurityGroup规则。

使用控制台,我似乎能够创build我想要的,但是使用PowerShell,我没有什么成功。

使用以下语法:

Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName | Set-AzureRmNetworkSecurityGroup | Add-AzureRmNetworkSecurityRuleConfig -Name 'MSTSC' -Direction Inbound -Priority 100 -Access Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '65456' -DestinationAddressPrefix '*' -DestinationPortRange '3389' -Protocol '*' 

我得到一个输出窗口似乎表明安全规则已经创build: 产量

但是,如果我然后检查门户,或者做

 Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName 

新增的规则不在那里。
但是,如果我添加规则与门户,并尝试使用我的PowerShell命令创build它,我收到以下错误:

Add-AzureRmNetworkSecurityRuleConfig:具有指定名称的规则已经存在

我错过了什么,但什么?

这实际上是一个非常愚蠢的问题。

将新规则添加到安全组时应采取的步骤:

  1. 使用Get-AzureRmNetworkSecurityGroup获取安全组
  2. 使用Add-AzureRmNetworkSecurityRuleConfig添加新Add-AzureRmNetworkSecurityRuleConfig
  3. 使用Set-AzureRmNetworkSecurityGroup在Azure中设置新的安全组(IE发布它)

我没有理解这些步骤,只是从互联网上复制粘贴,导致了我的错误。
当它到达第二个pipe道时,它将设置尚未更新的安全组(因此,我只是按照我所拉的那样推送组),并给我成功的消息。
之后,我在我的caching中Add新的组,这是规则的本地副本,而不会将其发布。

所以一个正确的方法是:

 Get-AzureRmNetworkSecurityGroup -Name $SecGroup -ResourceGroupName $RGName | Add-AzureRmNetworkSecurityRuleConfig -Name 'MSTSC' -Direction Inbound -Priority 100 -Access Deny -SourceAddressPrefix 'INTERNET' -SourcePortRange '3389' -DestinationAddressPrefix '*' -DestinationPortRange '3389' -Protocol '*' | Set-AzureRmNetworkSecurityGroup